0%

修复使用LeanCloud国际版时Valine阅读量和评论的bug

在这篇文章当中我们介绍过用Valine支持阅读量和评论的方法。

Valine通过LeanCloud提供的BAAS储存服务管理阅读量和评论,具体原理为:

  1. Valie会查找页面当中class值为leancloud_visitor的元素,获取其id为键值。
  2. 键值一般为文章发布日期和文章标题的组合。
  3. 发送请求到对应LeanCloud的app查询对应键值的阅读量。
  4. 将得到的值写入class值为leancloud-visitors-count的元素里。

一般而言1、2、4步都不容易出错,并且很容易查看页面的源码来确认。第3步一般保证config文件当中的appidappkey不出错即可,但之前有几次因为LeadCloud自身协议的更改导致阅读量和评论功能无法使用。

LeanCloud之前要求所有的国内版业务域名备案不然服务无法使用,显然为了区区一个博客备案过于麻烦,我们直接使用国际版便可解决问题。

但是前段时间突然又发现博客的阅读量和评论功能出问题,具体表现为无法读取文章的阅读量和评论,也无法写评论。

查看控制台之后,发现通过通用域名us.leancloud.cn发送的HTTP GET/POST请求返回ERR_NAME_NOT_RESOLVED的错误。一番搜索之后,发现LeanCloud国际版的通用域名已经停止使用,详情参见对应的github issue。我们需要使用服务的自定义域名,具体可在此处查找:

将其填入config中的Valine配置:

1
serverURLs: https://xxxxxxxx.api.lncldglobal.com # 把xxxxxxxx替换成你自己AppID的前8位字符

之后重新部署即可修复问题。