gitalk Error: Validation Failed

我现在博客的评论系统用的是gitalk,网上教程有很多,我参考的是这份教程

当我按照网上的说法搭好后,确实是可以利用issue进行评论了,但我在新发表文章时,竟然报错了:
Error: Validation Failed

当时我心里一凉,难道和gitment一样,gitalk也凉了?后来上网查了一下,发现是github现在要求issue的label name不能超过50。
(奥,现在我才知道,原来gitalk应该是利用label进行筛选,取得当前评论所属的issus。但后来看了一下gitalk的源代码和github关于issue的api,issue的查找应该和你的number有关,而gitalk是当你没有number时就用id代替,看的有点晕。PS:本人在前端方面纯属小白)
label name长度不能超过50

好了,那就想想有什么办法可以保证名字的长度可以不超过50吧。没错,就是md5,加密过后都是32位长度,且唯一。当然了,这个也是在gitalk的issue里查到的,接下来就来看看具体应该怎么做吧。

找到js版的md5算法

首推的自然是别人已经造好的成熟的轮子,**JavaScript-MD5**这个应该是可以的,亲测有效。

你只要在你的主题(比如我的就是next)下的source\js\src目录中创放入md5.js.min文件即可。

修改gitalk.swig文件

原本你的文件内容应该是:

{% if page.comments && theme.gitalk.enable %}
  <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
  <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
   <script type="text/javascript">
        var gitalk = new Gitalk({
          clientID: '{{ theme.gitalk.ClientID }}',
          clientSecret: '{{ theme.gitalk.ClientSecret }}',
          repo: '{{ theme.gitalk.repo }}',
          owner: '{{ theme.gitalk.githubID }}',
          admin: ['{{ theme.gitalk.adminUser }}'],
          id: location.pathname,
          distractionFreeMode: '{{ theme.gitalk.distractionFreeMode }}'
        })
        gitalk.render('gitalk-container')           
       </script>
{% endif %}

现在改成即可(修改了第4行和第12行)

{% if page.comments && theme.gitalk.enable %}
  <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
  <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
  <script src="/js/src/md5.min.js"></script>
   <script type="text/javascript">
        var gitalk = new Gitalk({
          clientID: '{{ theme.gitalk.ClientID }}',
          clientSecret: '{{ theme.gitalk.ClientSecret }}',
          repo: '{{ theme.gitalk.repo }}',
          owner: '{{ theme.gitalk.githubID }}',
          admin: ['{{ theme.gitalk.adminUser }}'],
          id: md5(location.pathname),
          distractionFreeMode: '{{ theme.gitalk.distractionFreeMode }}'
        })
        gitalk.render('gitalk-container')           
       </script>
{% endif %}

然后重新发布就ok了,gitalk又可以正确创建issue了,你又可以继续评论了。

需要注意的问题

因为gitalk关联issue是通过number,你没有number的时候,它会直接利用你的id,而id的这个生成条件又被你修改了,因此你之前评论是无法和你的文章关联上了。
如果对js稍微感兴趣的话,应该可以顺着这个思路往下能解决。博主有空也会试试,就当研究研究js,大家要是有成功的案例,可以在通过评论告知,毕竟这也是造福大家。
附上gitalk源码地址

有兴趣的话可以看看我的私人博客,也可以关注我的公众号,说不定会有意外的惊喜。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值