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) 
时间: 2024-12-29 04:14:59

Hexo Server 的一个迷の bug的相关文章

c++-二叉树搜索的问题,以及一个小bug

问题描述 二叉树搜索的问题,以及一个小bug #include<iostream> #include<string> using namespace std; class node{ public: string name; string keyword; node* left; node* right; node(string a = "0", string b = "0", node* c = 0, node* d = 0) : name

sql server统计一个字段出现的次数的问题

问题描述 sql server统计一个字段出现的次数的问题 从选课表和课程表中查询每门选修课的人数,查询结果中显示人数.课程名称,按人数降序排序sc表sid cid grade2005216001 16020010 96.02005216001 16020011 80.02005216002 16020010 67.02005216003 16020012 78.02005216003 16020013 87.02005216003 16020014 85.02005216111 1602001

Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决

原文:Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决 最近一直在开发XX的uwp版本,也是边摸索边做,最近遇到几个比较奇怪的问题,记录于此. 1.项目可用部署到PC,但无法部署到手机,提示以下错误: 错误 : DEP0001 : 意外错误: Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9 为了方便开发,我将常用的类库引用好.默认的几个页面做

menu-关于popupwindow学习中出现的一个小bug

问题描述 关于popupwindow学习中出现的一个小bug 我设置了一个buttonde点击事件 点击后能弹出popuowindow的框 ,我也设置了menu键,点击menu键 也可以弹出这个popupwindow的框 ,但是奇怪的地方在于,如果我不先点击button,我点menu键,它不会再弹出这个popupwindow的框了 ,意思就是只有先点button弹出那个popupwindow框先,点击menu才会有popupwindow这个框.我一直找不到原因,特地找各位大神帮帮忙!然后还有一个

sql-SQL Server查询 一个字段中不同值在另一个字段中分别出现的总个数,总个数从打到小排序?

问题描述 SQL Server查询 一个字段中不同值在另一个字段中分别出现的总个数,总个数从打到小排序? GoodsID Num A 4 B 2 C 1 A 3 B 4 C 3 我想得到: GoodsID Count A 7 B 6 C 4 用SQL Server语句如何实现?恳请行家高手不吝惜指点!万分感谢!! 解决方案 select sum(Num) as Count, GoodsID from table group by GoodsID 2015.05.28 17:16 解决方案二: s

SQL Server中一个隐性的IO性能杀手-Forwarded record

原文:SQL Server中一个隐性的IO性能杀手-Forwarded record 简介     最近在一个客户那里注意到一个计数器很高(Forwarded Records/Sec),伴随着间歇性的磁盘等待队列的波动.本篇文章分享什么是forwarded record,并从原理上谈一谈为什么Forwarded record会造成额外的IO.   存放原理     在SQL Server中,当数据是以堆的形式存放时,数据是无序的,所有非聚集索引的指针存放指向物理地址的RID.当数据行中的变长列增

求助蓝牙数据流读取问题,buffer的状态是一个迷

问题描述 求助蓝牙数据流读取问题,buffer的状态是一个迷 各位大大好,我是java小白+安卓小白,最近遇到一个头疼的问题: 我在创建蓝牙连接之后,开启新线程读取数据:(以下为线程类里的代码) Thread ReadThread=new Thread(){ //开辟缓冲区buffer byte[] buffer = new byte[1024]; int k=1; int num=0; public void run(){ try { while(count==0) { Log.e(TAG,

sql server-用VISUAL STUDIO与SQL SERVER做一个系统

问题描述 用VISUAL STUDIO与SQL SERVER做一个系统 用VISUAL STUDIO与SQL SERVER做一个系统,要求有三张表,有查.插.删.改的功能 解决方案 参考http://www.cnblogs.com/csonezp/archive/2012/12/27/2835472.htmlhttp://download.csdn.net/detail/lingtao129/5110574http://wenku.baidu.com/link?url=mmq0W7vkMKN3l

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

原文:SQL Server 2012:SQL Server体系结构--一个查询的生命周期(第3部分)(完结) 一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法(Access Methods)前,更新操作和刚才SELECT语句流程是一模一样的. 这次存取方法(Access Methods)需要修改数据,因此在I/O请求传递前,修改的细节要存放于硬盘