首先严厉批评一下 Hexo 官方,文档过于落后,导致官方提供的安装配置方法竟有很多错误,给大量用户造成极高的配置成本,而这些本来是不需要用户来承担——软件更新了文档却不改,你是要上天?
声明一下我的环境版本,如果你在网络搜索配制方法,请一定关注一下作者使用的版本,否则可能会有坑。
hexo 3.2 node.js 5.10.1 hexo-cli 1.0.1
一些常见问题的处理方案:
问题一:Mac 用户配置 Hexo 前安装 Command Line Tools
官方文档说,Mac 用户在配置 Hexo 时可能会出现一些错误,因此需要在配置前安装 Xcode,并通过 Xcode 安装 Command Line Tools。
大写的坑爹!
Xcode 自版本 5 之后,就将下载 Command Line Tools 的功能移除,而目前 Xcode 最新版本是 7.3 ,可见 Hexo 官方有多久没有更新文档了!大多数对 Xcode 没有任何需求的人,把将近 5G 的 Xcode 下载安装后发现对自己毫无帮助,该是怎样一种草泥马的心情?
苹果已向开发者单独提供 Command Line Tools,一共约 150M 大小,安装后约 450M 。
当然咯 Command Line Tools 也可以通过 命令行 来安装:
$ xcode-select --install
问题二:npm install hexo-cli -g
后出现无写入权限问题
由于 npm install 会对 /usr/local/bin 文件夹进行修改,需要 root 权限,因此只需在命令前加 sudo 即可:
$ sudo npm install hexo-cli -g
问题三:文档中用命令行安装nvm的代码错误
由于 Github 上代码地址发生了更改,而 Hexo 官方文档提供的依旧是旧地址,因此用户如果按照官方教程进行配置就会安装失败。
官方的失效代码:
$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh (本行有错,仅供鞭尸,请勿使用)
正确代码如下:
$ curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | sh
问题四:执行 hexo 命令时的 MODULE_NOT_FOUND 问题
在按照官方说明执行 hexo init blog (或者任意 hexo 命令)时,出现三个 Error: Cannot find module的问题。
{ [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE\_NOT\_FOUND' } { [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE\_NOT\_FOUND' } { [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE\_NOT\_FOUND' }
我在 hexo 的 issue 中发现大家有几种解决方法:
- 先卸载 Hexo ,然后仅安装 Hexo 的核心部分,放弃可选项,代码如下:
$ npm uninstall hexo $ npm install hexo --no-optional
同时有群众表示,新版本中需要添加 –save 参数,代码如下:
$ npm uninstall hexo $npm install hexo --no-optional --save
两种方法我都试过,对我无效。但对你可能有用,不妨一试。
- 在 Github Issue 下面,有人提醒也许问题并不出在 Hexo 或者 Node.js 身上,而是错误信息中那个 DtraceProviderBindings 模块的问题。相关链接在此。
问题五:部署到Github上的若干小坑
- 要在blog目录下安装hexo-deployer-git
这里我一直犯错,在用户根目录下安装,然后显示找不到目录云云。实际应该先进入blog目录,然后执行以下命令:
$ npm install hexo-deployer-git --save
-
如前文所述,执行 hexo 系列命令时,module_not_found 问题始终没有解决,但是目前看来,似乎并不影响程序的执行。所以这个错误应该是 OSX 中的某个细节问题,而非 Hexo 的问题。但每次都有这么个尾巴毕竟不爽,后面我会继续跟踪学习,尽量找到解决方案。
-
详细的安装步骤、以及写博客编辑页面等命令,都在官方文档中,不再赘述。