解决Hexo安装node-gyp卡住等问题

最近觉得还是要把自己的博客好好鼓捣一下,毕竟对未来找工作有帮助,当然最重要的是记录自己的学过的东西。

1.问题:

由于天朝的GFW,我发现重装hexo的时候一直出错,比如执行下面的语句,

1
2
$ npm install -g hexo-cli #可能需要sudo,安装hexo时
$ npm install #初始化hexo的blog时

经常遇到在node-gyp rebuild卡住,或者出现如下错误。原因很简单就是GFW

1
2
3
4
5
6
7
8
9
10
11
12
node-gyp rebuild
gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: EPERM, utime '/Users/dirk/.node-gyp/0.12.4'
gyp ERR! stack at Error (native)
gyp ERR! System Darwin 14.3.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/hexo-cli/node_modules/hexo-fs/node_modules/chokidar/node_modules/fsevents
gyp ERR! node -v v0.12.4
gyp ERR! node-gyp -v v1.0.3
gyp ERR! not ok
npm WARN optional dep failed, continuing fsevents@0.3.6

2.解决方案:

###用cnpm
cnpm是淘宝提供的npm中国镜像加速,cnpm不仅可以加速npm上包的下载,也提供了镜像加速Node.js 源码的下载。
https://npm.taobao.org/
你可以使用 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

1
2
$ npm install -g cnpm --registry=https://registry.npm.taobao.org #可能需要sudo
$ cnpm install -g hexo-cli #可能需要sudo,安装hexo直接解决

如果上面还是出现node-gyp rebuild卡住等情况,可以试下面的语句

1
$ sudo cnpm install -g node-gyp #-g 是global的意思

3.其他问题:

在建立好blog后我们hexo server后可能会出现这些下面的问题,找不到dtrace-provider

1
2
3
{ [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' }

解决方案:

1
2
3
4
5
$ sudo cnpm install -g dtrace-provider #这个是全局装dtrace-provider,但是你的blog里面还没有
$ hexo init new_folder #重新建一个hexo blog
$ cd new_folder
$ sudo cnpm install # 我自己的mac用cnpm一直要用sudo,
#然后把原来博客中其他文档拷贝到这个新的文件夹下,一些_config.yml等配置文件不要忘了

反正现在所有npm的操作都可以用cnpm来替代,cnpm 支持 npm 除了 publish 之外的所有命令

4.其他可能有用的语句

后面的指令只是我自己安装一些plugins用到的,方便自己查看而已

1
2
3
4
$ sudo cnpm install hexo-deployer-git -g
$ sudo cnpm install hexo-deployer-git --save
$ sudo cnpm install hexo-math --save
$ hexo math