valine评论失效解决
这几天我的博客 Valine 评论系统突然失效——既无法显示已有评论,也不能提交新评论。问题是这段时间我完全没有修改过评论系统的任何配置。
最初我怀疑是 Valine 自身更新出现了问题,但上网搜索问题后,发现不少站长都遇到了相同的问题,且都有一个共同点:都使用的 LeanCloud 国际版。
所以问题应该出在 LeanCloud 国际版的服务上。
打开浏览器控制台,发现以下错误信息:
1 | Failed to load resource: net::ERR_EMPTY_RESPONSE |
根据国际版域名问题 · Issue #340 · xCss/Valine,这可能是由于 LeanCloud 国际版对此域名停止支持或服务不稳定导致的。解决方案是配置自定义服务器 URL。
解决
方法一:迁移数据
导出数据并迁移到 LeanCloud 国内节点,这是一劳永逸的方法。
方法二:配置自定义服务器URL(推荐)
步骤 1:修改主题配置文件
在站点目录下的 _config.yaml 中找到 Valine 的配置,修改 serverURLs 参数:把xxxxxxxx 替换为你的 AppID 的前 8 位字符。
1 | serverURLs: https://xxxxxxxx.api.lncldglobal.com |
步骤 2:检查主题模板文件
如果主题未配置该参数,需要找到 valine.ejs 文件,在 Valine 初始化代码中添加 serverURLs 配置:
1 | new Valine({ |
步骤 3:更新 LeanCloud SDK 链接
根据Valine的Github的Issues区,一个大佬提出的Issue。详见:Leancloud URL bug in av.js · Issue #376 · xCss/Valine
需要将旧的CDN链接:
1 | <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script> |
替换为新版本:
1 | <script src="//code.bdstatic.com/npm/leancloud-storage@4.12.0/dist/av-min.js"></script> |
再重新部署,评论已经能成功显示了。
补
如果上述方法仍不奏效,可以尝试替换Valine.min.js中的资源引用:
1 | // 将原来的 |
总结
通过以上三步操作,我的博客评论功能终于恢复正常:
- 设置 serverURLs 指向正确的国际版接口地址
- 确保 Valine 配置中正确定义了 serverURLs 参数
- 更新 av-min.js 文件到最新版本
如果你也遇到类似问题,不妨按照这个流程检查一下你的 Valine 配置。希望这篇经验分享能帮你节省大量时间!
温馨提示:在进行任何修改前,建议先备份相关配置文件,以免出现意外情况。