Hexo Server 的一个迷の bug

简介:

前几天我突然发现,Hexo 启动 server 之后,没法感知文章的修改然后自动刷新页面。这个问题让我很困扰啊。虽然我写 markdown 的时候不需要实时预览,但是修改主题的时候如果没有实时预览,根本就没法开心地玩耍了。

然后我又重新踏上了折腾之路。

入局

服务器没法感知文件更新,这种事情用脚趾头想都知道是监听文件系统的模块出了问题。Hexo 有一个核心模块叫 hexo-fs,专门负责和文件系统打交道。然后 hexo-fs 依赖了chokidar,这是一个监视文件系统各种事件的类库,它又依赖了 fsevents 去实现 OS X 上对文件系统事件的监听。

虽然我最近一段时间都没有去更新 hexo 的各个模块,但是我还是觉得问题出在 node 模块上面。于是我开始各种调整 fsevents 的版本,然后各种 npm install。然而并没有什么卵用。

困局

后来我尝试着把 Hexo 整个干掉,在博客目录旁边新建一个目录,然后用 Hexo init 出来一个全新的只有 Hello World 的博客。没想到这个全新的博客也遭遇了同样的问题。

想到我之前还搞了一个 Docker 镜像,里面有一个好用的 Hexo 环境。在那个版本的 Hexo 环境中,一切都是正常的,修改了文件是能够得到实时更新的。于是我又尝试着把 Docker 中 Hexo 环境的 package.json 文件弄出来,把范围版本修改成固定版本,然后把 Hexo 环境的 node_modules 目录砍掉重练。然而并没有什么卵用。

难友

一筹莫展,无计可施。没想到我也有被一个 bug 折腾的死去活来的时候。

只好求助于 Google 了。

然而并没有几个人遇到了和我一样的问题。最后我还是在 Hexo 的 issue 列表[1]中找到了难友。

但是,整个 issue 里面就只有 3 个人啊!这个问题太小众了啊!其他两个家伙也没办法解决啊!解决问题还是只能靠自己啊!

不过我还是从 issue 交流中获得了一些线索。另外一个遇到同样问题的家伙用的是 Debian,也就是说这个 bug 不是 OS X 独占的了,可以把 fsevents 的问题排除。

破局

昨天,我突然想起前段时间我弄了一个虚拟机安装的 OS X 10.10,虽然卡的不行但是勉强能用。于是我在虚拟机里面打了快照之后,开始安装 Node.js 环境,Hexo 环境。这样子安装出来的博客居然是好的!

怀着激动的心情,我把本机里面的 Node.js 连同 Hexo 全部砍掉重练,然后满怀期待的在之前的博客目录启动 server。我似乎听到了心碎的声音。

为什么会这样。我心有不甘,然后随手在家目录新建了一个 Hexo 环境。然后,奇迹!粗!线!了!这个博客环境居然是好的。

然后我尝试着把之前的博客目录复制一份到家目录,然后这个博客也就这样莫名其妙的好了。

于是,我的博客目录就从 ~/Sites/blog.jamespan.me 迁移到了 ~/blog.jamespan.me,可怜的家目录又多出一个目录来。

后来又尝试了一下,似乎博客目录放到其他地方比如 ~/Downloads 或者 ~/Documents 都是可以的,唯独 ~/Sites 不行,至于原因,还不清楚。

在把各种尝试时候创建出来的博客目录删掉时,不小心用 rm -rf 把家目录里面的博客目录干掉了。顿时心都凉了。自从我把 Hexo 升级到 3.x,之前用的一个把博客文章备份到 github 的插件就不能用了,于是我除了偶尔记得用 Time Machine 做全盘备份之外,对博客的单独备份一直没怎么做。

还好我在 ~/Sites 目录还有一个博客环境,家目录那个是从那里复制出来的,如果是移动出来的,我就只能老老实实去时光机找备份了。

于是我又可以愉快的写博客改主题了~

另外,Browsersync 真是神器,我可以同时在 iPhone、iPad、Chrome 上调试页面,推荐安装 Hexo 插件 hexo-browsersync


  1. `hexo server` fails to update content after a while (3.0.0) 

目录
相关文章
|
8月前
|
关系型数据库 MySQL Shell
在1024中部署抖音server项目 | 青训营
在1024中部署抖音server项目 | 青训营
|
前端开发
前端项目实战贰拾-​sourceTree出现sourceTree The host key is not cached for this server
前端项目实战贰拾-​sourceTree出现sourceTree The host key is not cached for this server
96 0
前端项目实战贰拾-​sourceTree出现sourceTree The host key is not cached for this server
|
存储 PHP
踩一坑,采一金之php数据类型那点“破”事
# 踩一坑,采一金之php数据类型那点“破”事 ![ship](http://img.blog.csdn.net/20140815171009937?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFkY2xvdWRzb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70
3479 0
|
Ubuntu Linux 网络安全
Vim 核心开发者 Sven Guckes 去世,Vim 之父:我要把 9.0 版本献给他
Vim 核心开发者 Sven Guckes 去世,Vim 之父:我要把 9.0 版本献给他
323 0
Vim 核心开发者 Sven Guckes 去世,Vim 之父:我要把 9.0 版本献给他
|
资源调度 JavaScript 前端开发
|
PHP C++
PHP项目的“苦逼”经历与思考
PHP零基础,但由于项目人手不够的原因,被安排到一个用户“定制”项目。该项目是用PHP生成的统计数据报表。而用户又有新的3个需求,需要在已有的代码基础上完成。
374 0
PHP项目的“苦逼”经历与思考
|
Java jenkins 测试技术
Jenkins +svn(学习笔记三十)
Jenkins + SVN 持续集成  无事在家,闲得发慌,上周六面试华为的配置管理工程师,让我明白了在社会大行业里配置管理其实是个更为专业的岗位,涉及到软件开发的各个流程,数据的产生,规范的定义,代码的持续集成,基线管理,当然也涉及到供应链的一些东西,在工作中发现问题,解决问题,推动一些流程规范的制订,对流程中出现的问题进行修正等等。
2272 0
|
Web App开发 编解码 PHP
CTF---Web入门第十一题 PHP大法
PHP大法分值:20 来源: DUTCTF 难度:中 参与人数:8205人 Get Flag:2923人 答题人数:3042人 解题通过率:96% 注意备份文件 解题链接: http://ctf5.
1638 0
|
SQL Web App开发 关系型数据库