关于valine评论国际版无法提交的问题原因分析和解决方案
浏览了一番文章,想写两句评论。
结果发现
这就有意思了,评论无法提交。
问题
出现了问题,我们就去leancloud的管理平台进行修改。
发现他没有定义一个实例。
问题1
类和实例
为什么一定要定义一个实例才能运行呢?
类相当于一张汽车的「制造图纸」,你可以通过这个「图纸」来制造出许许多多汽车,甚至可以改变「图纸」,造出不同样式的汽车。
但是如果只有图纸,没有创建出一个真正的汽车实例,我们是永远都无法进行「开车」这个操作的。
可以说有了类就有了对象,就有了对对象的操作。
解决办法
办法也很简单,创建一个实例。
可以参考这篇文章进行实例搭建。
问题2
在创建完对应的实例以后,发现评论还是无法运作。
这里最重要的一点是云函数的问题。
通常发生在国际服的比较多,华北和华东服务器尚未出现过此类问题。
可以看到部署在华东服务器上面的实例有三个云函数,其中两个是我自己添加的。
但是最重要的comment函数是程序写的。
这个函数负责的评论的存储与管理,非常重要。
如果选择国际服,就有可能无法加载出这个函数。
原因
此 bug 是由于 LeanCloud 国际版更换 API Url 导致的,原来的 us.leancloud.cn
和 us-api.leancloud.cn
已经停用,换为了 APPID前八位.api.lncldglobal.com
。
解决办法
① 在
Valine.min.js
中更换 LeanCloud 对象存储 SDK 为 最新的4.12.0
版本。leancloud-storage@3/
–>leancloud-storage@4.12.0/
,查找替换即可。
如果你使用 CDN,可以 Fork 一份 Valine 的 GitHub 仓库,然后自行更改并使用 jsdelivr CDN 。
我已经改好了一份:链接 ,如有需要可以自取。
② 在引用 Valine 的 js 或 YAML 中设置serverURLs
字段为APPID前八位.api.lncldglobal.com
。
比如serverURLs: 'https://xxxxxxxx.api.lncldglobal.com'
这个
办法虽然可行,但是操作麻烦,而且不兼容部分CDN加速。
比较简单的方法就是选择华北和华东服务器,因为服务器处在国内,比较稳定。
但是使用这两个服务器要遵守《中华人民共和国网络安全法》,需要进行实名备案注册。
而且备案注册必须使用支付宝的刷脸进行认证,优点就是成功率非常高,能够解决大部分问题。
小结
在搭建个人博客的时候,服务器能采用国内的服务器,就尽量使用国内的服务器。
因为网络长城的存在及国际政治不稳定因素,很容易造成连接中断或连接被污染迟缓等等问题。