hexo server 保存文章时候内容空白问题

追踪 hexo server 命令偶尔出现的文章空白问题。

hexo 版本: v4.2.0

问题:运行 npm run server 本地开发环境时候,偶尔会出现文章内容空白。

github issue: https://github.com/hexojs/hexo/issues/4271

给文件 node_modules/hexo/lib/box/index.js 246 行 watcher change 事件加了打印信息,获取到的信息如下:

1
2
3
4
5
6
7
8
const fs = require('fs');
watcher.on('change', path => {
console.log(1111, fs.statSync(path).size);
setTimeout(() => {
console.log(2222, fs.statSync(path).size);
}, 60);
this._processFile(File.TYPE_UPDATE, getPath(path));
});

如图:

处理办法

就在出问题的地方添加一个延迟事件。

node_modules/hexo/lib/box/index.js 246 行:

源代码:

1
2
3
watcher.on('change', path => {
this._processFile(File.TYPE_UPDATE, getPath(path));
});

修改后:

1
2
3
4
5
6
7
let timer = null;
watcher.on('change', path => {
clearTimeout(timer);
timer = setTimeout(() => {
this._processFile(File.TYPE_UPDATE, getPath(path));
}, 60);
});

如果设置 60 毫秒后还有问题,可以将 60 再改大一点。

此处加上的 setTimeout 还有一个好处,可以节流,短时间内多次保存当做一次处理。

问题暂时解决,还有其他配置问题可能导致页面空白,参考: hexo-server 偶尔内容空白和内容截断,导致 hexo-browsersync 插件热更新失败

本文由 linx(544819896@qq.com) 创作,采用 CC BY 4.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。本文链接为: https://blog.jijian.link/2020-04-26/hexo-server-blank/

如果您觉得文章不错,可以请我喝一杯咖啡!