valine访问leancloud国际版异常,评论失效修复

起因

太久没维护博客了,最近发现Valine评论都展示不出来,看了下console发现是leancloud访问出了问题

查了下前因后果,大概就是LeanCloud对部分域名不再进行维护了,如果继续使用老的域名去拉取评论数据必然失败。

这里和大家同步下我的环境

调整方案如下

获取新域名

  • 登录leancloud后台
  • 查询自己的APPID

替换https://你的appid前8位.api.lncldglobal.com获得新域名

修改valine代码

  • 主题配置文件中的valine配置增加配置: severURLs(私有leancloud域名)
  • 修改主题中valine对应的js源码:加载私有域名
  • 更新av-min.js文件:确保私有域名可生效

示例

不同的主题可能涉及到的代码位置不同,但是调整思路类似,这里我贴下我的主题配置和涉及到调整的代码片段

主题配置文件config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13

valine:
enable: true # if you want use valine,please set this value is ture
appId: 12345678 # leancloud application app id
appKey: 1234123123123 # leancloud application app key
notify: false # valine mail notify (true/false) https://github.com/xCss/Valine/wiki
verify: false # valine verify code (true/false)
pageSize: 10 # comment list page size
avatar: monsterid # gravatar style https://valine.js.org/#/avatar
lang: zh-cn # i18n: zh-cn/en/tw
placeholder: 📢📢📢留下邮箱可以收到回复提醒哦~
guest_info: nick,mail,link #valine comment header inf
serverURLs: https://12345678.api.lncldglobal.com #替换为你的私有域名

valine对应的js源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//更新av-min.js
<script src="//code.bdstatic.com/npm/leancloud-storage@4.12.0/dist/av-min.js"></script>
<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
<script>
var GUEST_INFO = ['nick','mail','link'];
var guest_info = '<%= theme.valine.guest_info %>'.split(',').filter(function(item){
return GUEST_INFO.indexOf(item) > -1
});
var notify = '<%= theme.valine.notify %>' == true;
var verify = '<%= theme.valine.verify %>' == true;
var valine = new Valine();
valine.init({
el: '#vcomment',
notify: notify,
verify: verify,
appId: "<%= theme.valine.appId %>",
appKey: "<%= theme.valine.appKey %>",
placeholder: "<%= theme.valine.placeholder %>",
pageSize:'<%= theme.valine.pageSize %>',
avatar:'<%= theme.valine.avatar %>',
lang:'<%= theme.valine.lang %>',
//增加serverURLs
serverURLs:'<%= theme.valine.serverURLs %>'
})
</script>

测试

本地构建启动之后可能会因为不在leancloud白名单内,返回403,不过不要紧说明已经生效

直接hexo d发布就能生效了

---------- 😏本文结束  感谢您的阅读😏 ----------
评论