ZHUSCAFE

关于

解决 Hexo 出现错误的故事

预计 7 分钟

这是一段惨痛的经历,在这段时间中,我真的想哭。这是一个解决 hexo 出现错误的故事,这个故事很长、很长。

如果大家也发现执行 hexo 命令时出现错误,请直接看本文的总结部分,也许是你想要的答案。

install hexo

正文

前段时间升级了一下node,直接升级到了6.2,好久没写博客了,然后随手写了一篇,然后创建博文的时候,突然发现:nani?居然有错误,不可忍啊,虽然操作还是成功了。不过错误必须去除,然后我想,是不是 hexo 的版本太低了,已经更新过了呢。

结果更新了一下,不知道怎么回事,错误更多了,hexo 打头的命里都会出错,天哪!

想了一下,解决这个问题还是有办法的,直接重装不就得了。

话不多说,直接卸载

sudo npm uninstall hexo-cli -g

然后安装,心想问题肯定能解决

sudo npm install hexo-cli -g

结果,又有问题,当时我的内心是崩溃的,总之就是一个东西没有成功装好什么的。

不过试了一下,hexo 的命令已经能用了,赶紧 init 一个文件夹出来,结果第一行句开始报错,错误内容大概是这样的:

Error: Cannot find module './build/Release/DTraceProviderBindings'

不过好在下面创建的过程还有,我看着进度条一点一点走过去,心想,这个错误应该不是什么大错误,应该不会影响。

然而我错了,文件夹里面内容下载好之后,就开始下载什么依赖了,然后下载完之后就卡住了,是的,纹丝不动,

> dtrace-provider@0.6.0 install /usr/local/lib/node_modules/hexo/node_modules/dtrace-provider
> node scripts/install.js

我看着这输出,感觉时间仿佛静止了,几分钟后,我按下了 ctrl + c

心想我应该不是第一个遇到这种情况的人,我 google 百度一齐上,搜索到了几种方法

一、npm install hexo --no-optional

一看,果断不行,现在要安装的是 hexo-cli

二、重装 hexo-cli 可以解决问题(喂,我已经重装过了啊)

没办法,尝试一下把 --no-optional 放到所有命令后面吧,结果,华丽丽的,不行。

然后我就尝试重装,加 sudo 不加 sudo 的,我感觉尝试不止十遍了,无一成功。

在绝望之中,我再次求助于搜索引擎,这次搜索到了一个 github 上的 issue,说是 6.0 无法编译 hexo。。。

黑人问号

我想,估计 hexo 还没有兼容 6.0 以上的版本吧。

赶紧切换版本试试,之前安装过的 n 派上用场了,用 n 安装了一个 5.8.0 的 node,切换过去,安装!

在下载 5.8.0 的过程中,我是欣喜的,这应该就是终极解决方案了,结果,当我敲下命令之后,一片红色。

根本无法安装任何包。

估计是我把 npm 升级了的缘故,老版本的 node 不兼容。

但我绝对是不会屈服的,经过搜索,我发现存在着一个叫做 nvm 的 node 版本管理软件,灵活性比 n 高了许多。

就是他,这才是终极解决方案,删掉所有包,删掉 node,安装 nvm,等等,好像有什么不对。

看了一下 nvm 的介绍,不支持 Fish,此处应有黑人蒙逼脸。

看来不得不抛弃用了许久的 Fish Shell了,终于安装了 nvm。

接着安装了几个版本的 node,安装 hexo 的 node 版本是 4.2.2,连 5 都不敢用了,总算是成功安装,一路弄下来,期间又遇到一点小坑,很容易的解决后,总算,结束了,这次经历,身心疲惫啊。

总结

如果发现 hexo 出现问题,并且 node 的版本是高于 6.0 的,切换到一个低版本的 node 吧。

就是这么一句话,我折腾了不知多久,泪目。

参考资料

[1] 使用 nvm 管理不同版本的 node 与 npm

[2] 升级Node.js v6.0.0之后无法编译

#hexo
#博客
#npm