博客无法显示评论也无法提交新评论,解决问题记录
背景
使用hexo pure主题提供的valine评论插件设置完后,发现评论无法显示
后来在Valine的官方群中,有部分网友表示最近遇到相同问题,共性是都使用的LeanCloud国际版。
哦,原来是LeanCloud的锅。
具体排查
查看网页控制台,我发现,
1 | Failed to load resource: net::ERR_EMPTY_RESPONSE |
或者
1 | Failed to load resource: net::ERR_NAME_NOT_RESOLVED |
调试过程中还报过别的错,我没有记录,但总之,都是围绕这个域名解析的问题。反正就是这个域名无法正确得到结果。
那怎么办呢?根据群里大佬讨论可得,似乎是现在国际版对这个域名不再支持了,也有人说是不稳定,推荐自定义服务器URL。
解决方法
法一:导出数据,更换到国内节点,快准狠。
法二:懒得换(比如我),那就改代码吧。
如果主题中已配置的Valine有severURLs字段,直接设置即可。
1 | serverURLs: https://xxxxxxxx.api.lncldglobal.com # 把xxxxxxxx替换为自己AppID的前8位字符 |
如果主题未配置该参数,就需要找到valine的js文件,比如我这里的
\hexo\themes\pure\layout_script_comment\valine.ejs
1 | new Valine({ |
然后再配置上面的serverURLs。
然而我在配置完这一步后,仍然不能显示正确的评论。群里大佬已经撤了,剩下一个前端菜狗在风中凌乱。
为什么不行呢?
我认真地排查后发现评论这块并没有跳转到我设定的serverURLs,还是us-api.leancloud.cn啊。
为什么呢?
我开始翻Valine的Github的Issues区,从一个大佬提出的Issue中发现了端倪。详见:https://github.com/xCss/Valine/issues/376
这个大佬提问说这个av.js是不是有bug啊?
看了大佬的截图,我懂了。
这个cdn是版本不对了吧?
于是我找到LeadClond官网手册,查询最新的CDN链接。https://leancloud.cn/docs/sdk_setup-js.html
将\hexo\themes\pure\layout_script_comment\valine.ejs 这个文件的这一行
1 | <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script> |
再重新部署,评论已经能成功显示了。
回顾三部曲:
- 设置serverURLs。
- 若Valine的js文件未定义,需增加定义serverURLs。
- 更新av-min.js文件。
参考资料
https://github.com/xCss/Valine/issues/340
https://github.com/xCss/Valine/issues/376