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