我一直在努力在我的CentOS 7机器上升级到最新版本的Node和NPM。
不幸的是,我已经遭遇这个错误将近一个星期了。最终我找到了一个有效的解决方案。
如果您的NPM目前无法正常工作,最简单的方法就是重新安装一个可用的版本。
我通过代码安装。假设已安装Git,以下命令可实现此目标:
cd ~
git clone https://github.com/nodejs/node.git nodejs_code
cd nodejs_code
./configure
make
make install
在安装了最新版本的npm和node之后,需要注意的是这不是稳定版本(而是直接从源头获取的最新版本)。
当前所安装的node版本是5.0.0-pre,对我来说太新了;而npm版本是2.14.4,对我来说太旧了。
为了获得node的最新版本,我将使用npm安装“n”包。通过使用“n”,我将安装node的最新版本。
npm install -g n
n stable
如果使用root用户(我用来安装全局包),需要在~/.bashrc
文件中添加以下行,以允许root用户访问/usr/local/bin命令中的命令。(您可能不需要此步骤)
export PATH=/usr/local/bin:$PATH
目前我的node版本是4.0.0,这是最新的稳定版本。
现在需要更新npm,这是最让人头疼的事情。
直接更新到最新版本总是会出现"are-we-there-yet"错误,我只能猜测它的意思是“没有到达,别再问了,否则我就把node掉头”。
相反,我发现先安装版本3.3.3可以解决这个问题。
npm install -g npm@3.3.3
现在已经安装了3.3.3版本,可以正常运行而不会出现“are-we-there-yet”错误。
谢天谢地。孩子们,请把手臂放在车内,并系好安全带,因为我们快要到达目的地了......
npm install -g npm
通过输入最终命令,我成功使用了最新版本的npm,并搭配最新稳定版的node。目前撰写此文时,最新版本为3.3.5。
从这里开始,我的命令如下。
n stable
npm install -g npm
每次我运行这些命令时,我都可以毫无干扰地使用npm而不必担心孩子们在后面抱怨。
注意:
由于我管理的多个服务器都没有默认安装node,因此我一遍又一遍地执行此任务......
因此,我决定将这些说明转化为一个脚本。
享受吧:
importnode.sh
#!/bin/bash
cd ~
git clone https://github.com/nodejs/node.git nodejs_code
cd nodejs_code
git reset --hard
git pull origin master
./configure
make
make install
if [[ `cat ~/.bashrc |grep -E "PATH.*/usr/local/bin:.*"` ]];
then
echo "Already Done";
else
echo "export PATH=/usr/local/bin:\$PATH" >> ~/.bashrc;
export PATH=/usr/local/bin:$PATH;
fi;
npm install -g n
n stable
npm install -g npm@3.3.3
npm install -g npm
把这段代码放入nodeimport.sh文件后,唯一需要做的就是使它可执行并执行它。
$ chmod +x importnode.sh
$ ./importnode.sh
稍等片刻,所有内容都将被安装。
sudo npm cache clean -f sudo npm install -g n sudo n stable
之后,我尝试安装grunt。 - Gregor Voinovnpm install are-we-there-yet
命令? - Bidhansudo npm install -g grunt-cli
或npm -v
获取grunt或npm的版本,则会出现此错误。 - Gregor Voinov