Gitalk Error: Validation Failed. 442 報錯解決方法

作者: Calpa Liu
字數:1438
出版日期:March 10, 2018
更新日期:December 7, 2023
分類: #前端開發

最近忙著大學的事情,少了時間寫博客文章。可是沒想到在過去那一篇文章發佈之後,就遇到 Gitalk 評論區出現 Error: Validation Failed. 這樣的問題,在 Github 上面和網友討論之後,想出了一個解決方法,希望可以拋磚引玉。

問題

Request Payload

Github 更新了關於 Issue 字數的限制,利用 location.pathname 的話創建 Issue 的 Tag 的話,很容易超過 50 字。

方法

這是原本的配置,也是 Github Repo 上面的入門方法。

const gitalk = new Gitalk({
  clientID: "Github Application Client ID",
  clientSecret: "Github Application Client Secret",
  repo: "Github repo",
  owner: "Github repo owner",
  admin: [
    "Github repo owner and collaborators, only these guys can initialize github issues"
  ],
  id: location.pathname, // Ensure uniqueness and length less than 50
  distractionFreeMode: false // Facebook-like distraction free mode
});

解決思路

如果直接修改 id 的賦值的話,那麼當 Gitalk 尋找以前的標籤的時候,便會出現找不到 Issue,自動創建一個新討論區的問題。

這很明顯不是我們需要的設計,我們是想要繼續運用那一個 Issue。

於是我便想了一下最近的 Issue 和以前的 Issue 的區別,其中一個就是時間的分別。

因為我遇到這個問題是 2018 年 3 月,所以用這個時間分開 id 的賦值就好了,比如把標題 (title) 設置成 id:

const issueDate = "2018-03-01";

if (moment(createdDate).isAfter(issueDate)) {
  id = title;
}

這樣的話,其實就可以了。但如果文章的標題很長的話,那又會超出 50 字的限制。那麼用 md5 把字數縮短一下就好了。它既帶有唯一的特性,也可以限制字數。

首先安裝 md5 工具:npm install md5 然後在你寫入 Gitalk 評論區的地方寫入以下代碼:

import md5 from "md5";

id = md5(title);

如果你是使用 React 或者想要觀看代碼更改的話,那麼你可以查看我的 Commit Log: https://github.com/calpa/blog/commit/88c83f66b070655e645581783097f019e6539c0e#diff-b334c7299860c69226f3d8a8f4a36c1f

如果你覺得實用的話,不妨 Star 一下以獲得之後的最新更新。

相關鏈接

  1. md5
  2. gitalk/gitalk
感謝您閱讀我的文章。歡迎隨時分享你的想法。
關於 Calpa

Calpa 擅長使用 TypeScript、React.js 和 Vue.js 開發Responsive Web Design網站。

此外,Calpa 積極參與香港和台灣的開源社區,曾在2019年的香港開源大會上擔任講者,提供工作經驗和見解。此外,他也在 GitHub 上公開分享個人博客程式碼,已獲得超過300顆星星和60個分支的支持。

更多前端開發技術文章:傳送門