29 May 2014

JavaScript任务运行工具Grunt类似GNU Make,可以自动化地执行一些任务。今天在我的Ubuntu 12.04系统上安装Grunt时遇到了一些问题。 下面是这些问题及其解决方案。

我们要执行的安装命令是:

npm install -g grunt-cli

遇到的问题有两个。

第一个问题在官方网站的安装说明里已经提到了,即Node.js的版本过低。

我的系统里没有npm,在用sudo apt-get install npm安装npm时,会自动安装Node.js,可是这时候安装的Node.js版本为0.6。Grunt要求Node.js版本至少为0.8,所以这时安装会失败(而且错误信息比较诡异)。 看来Ubuntu的软件仓库里Node.js更新不及时。解决方法就是去http://nodejs.org/下载最新版本。我不小心下载了源代码,就自己configure & make install了,其实是可以下载二进制的。

第二个问题是网络原因导致的,提示“Error: tunneling socket could not be established, cause=socket hang up”。

根据StackOverflow上的一个问答,执行npm config set registry http://registry.npmjs.org/之后再安装就可以了。安装程序默认访问的是安全链接https://registry.npmjs.org/,我直接在浏览器里输入这个网址也无法访问,改为非安全连接http://registry.npmjs.org/就可以。

解决以上问题之后,npm install -g grunt-cli就成功执行了。