配置 Hexo + Github 博客的若干恶心处

首先严厉批评一下 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 。

下载链接:
https://developer.apple.com/downloads/

当然咯 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 中发现大家有几种解决方法:

  1. 先卸载 Hexo ,然后仅安装 Hexo 的核心部分,放弃可选项,代码如下:
$ npm uninstall hexo
$ npm install hexo --no-optional

同时有群众表示,新版本中需要添加 –save 参数,代码如下:

$ npm uninstall hexo
$npm install hexo --no-optional --save

两种方法我都试过,对我无效。但对你可能有用,不妨一试。

  1. 在 Github Issue 下面,有人提醒也许问题并不出在 Hexo 或者 Node.js 身上,而是错误信息中那个 DtraceProviderBindings 模块的问题。相关链接在此

问题五:部署到Github上的若干小坑

  • 要在blog目录下安装hexo-deployer-git
    这里我一直犯错,在用户根目录下安装,然后显示找不到目录云云。实际应该先进入blog目录,然后执行以下命令:
$ npm install hexo-deployer-git --save
  • 如前文所述,执行 hexo 系列命令时,module_not_found 问题始终没有解决,但是目前看来,似乎并不影响程序的执行。所以这个错误应该是 OSX 中的某个细节问题,而非 Hexo 的问题。但每次都有这么个尾巴毕竟不爽,后面我会继续跟踪学习,尽量找到解决方案。

  • 详细的安装步骤、以及写博客编辑页面等命令,都在官方文档中,不再赘述。

Tagged : /