在8月10号我升级为hexo5.0版本,还在《Hexo Hugo Vuepress Gatsby静态网站生成器的选择》中提到Hexo升级的速度略有提升。

而今天发现,某些文章中的代码出现了渲染问题,比如在《Coding持续集成自动部署Hexo博客》中<配置coding持续集成-方案>这两段代码中的花括号就出现了渲染错误,直接以&#123&#125分别代替了左花括号和右花括号。

依稀记得之前是没有这个问题的,那么应该不是主题所致,为了验证,特意下载了主题包不做任何改动,问题依旧出现。

回退hexo版本

于是就回退Hexo版本为4.2.1,问题得以解决。我是直接拿之前备份文件进行恢复回退版本的,因此备份文件中有一个canonical-link插件没有安装,安装后,发现问题又出现了,如此反复几次,问题依旧出现,然后我就把问题归结为Hexo版本和这个插件都能导致花括号的渲染问题。

正当我想要用其他插件来替代此插件的时候,我查看了一下Hexo版本,发现又变成hexo5.0.2,就有点纳闷了,难道是重新安装插件的时候自动升级了hexo不成,可也没有看见Hexo升级的信息。

在本地测试的时候,推荐使用hexo clean && hexo s这样的命令,一定要先清理掉缓存。

于是又重复,这次想起了package.json文件中的"versionhexo字段还是原来的5.0.2的信息,因此可能是这样导致的,故而删除后在重新安装插件,结果每次插件一安装好,就不能运行Hexo,出现错误如下:

ERROR Cannot find module 'hexo' from 'D:\website\HexoWeb'
ERROR Local hexo loading failed in D:\website\HexoWeb
ERROR Try running: 'rm -rf node_modules && npm install --force'

最后运行了npm install --force后然后在安装canonical-link插件,然后在执行hexo v查看版本信息,发现版本终于是4.2.1,本地测试后,问题得以解决。目前版本信息如下:

hexo: 4.2.1
hexo-cli: 4.0.0
os: Windows_NT 10.0.17763 win32 x64
node: 12.18.3
v8: 7.8.279.23-node.39
uv: 1.38.0
zlib: 1.2.11
brotli: 1.0.7
ares: 1.16.0
modules: 72
nghttp2: 1.41.0
napi: 6
llhttp: 2.0.4
http_parser: 2.9.3
openssl: 1.1.1g
cldr: 37.0
icu: 67.1
tz: 2019c
unicode: 13.0

那么,这个花括号的渲染问题,就是这次升级Hexo版本所致,还好我把网站中稍长点的代码信息都在Gitee上也存有一份,主要是方便访客复制,因此对之前参照某些文章的访客不至于造成严重的使用问题。

那就暂时用回Hexo4.2.1,待看看今后主题会不会修复此问题,待修复后再升级。网上搜到应该可以修改node_modules中的文件信息解决,我没尝试,而且那篇文章也是在2020年1月份的文章,Hexo版本未必相同,解决过程也过于麻烦,最主要是怕今后万一又出现什么问题,你还得考虑是不是你修改过node_modules中的文件所致。而且时间久了,还可能遗忘过你所做的修改,这不我也害怕遗忘今天发生的这个情况,故此赶紧水一篇文章来压压惊,好提醒今后的自己。

前几天的宝塔漏洞事件,如果不是追求最新的版本,估计不会有那么多人中招,软件不一定是最新版本就是最好,尽管最近版本会修复之前的一些问题或漏洞,但也会引入新的问题。

刚开时怀疑是不是主题问题的时候,还特意去主题开发者的博客看了看他有没有在问题,发现并没有,而且还发现人家用的还是hexo3.9的版本。

尽管今天所发生的hexo问题,不能算作Hexo的bug问题,而是版本和主题之间的兼容性问题。升级之前的时候我还特意翻看了hexo官网的更新信息,好像是提到了什么转义的问题,不知道是不是与此有关。

再升级hexo版本

哎,白扯这么多蛋了,看来现在问题真出现在Hexo版本上,我上面还说是版本与主题的兼容性问题。去hexo官网瞧了一眼,发现8月22号更新到5.1.0版本(虽然下面更新到5.1.1版,但官网没有列出),于是我就想着要不试试最新版本看看。

结果更新到最新版本,hexo v信息如下:

hexo: 5.1.1
hexo-cli: 4.2.0
os: Windows_NT 10.0.17763 win32 x64
node: 12.18.3
v8: 7.8.279.23-node.39
uv: 1.38.0
zlib: 1.2.11
brotli: 1.0.7
ares: 1.16.0
modules: 72
nghttp2: 1.41.0
napi: 6
llhttp: 2.0.4
http_parser: 2.9.3
openssl: 1.1.1g
cldr: 37.0
icu: 67.1
tz: 2019c
unicode: 13.0

发现上述所说的渲染问题解决了,早知道我直奔官网,然后升级,不行再考虑回退版本,也不至于浪费掉这么多时间。此刻想起了手机行业的一个梗,方向错了。

如果不总是追求更新,晚一个月升级就是直接从4.2.1升级到5.1.1,也就碰不见这个问题,这就是代价啊。