我正按照the npm doc site上的说明安装最新的npm。
我的问题是使用命令:
npm install -g npm
获取最新版本的NPM似乎不起作用:它似乎没有安装任何所需的依赖项,因此当我运行它时会出现以下错误:
module.js:340
throw err;
^
Error: Cannot find module 'are-we-there-yet'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/harmic/.node_modules/lib/node_modules/npm/node_modules/npmlog/log.js:2:16)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
我使用的是Centos 6机器,所以我首先从EPEL安装node + npm,如下所示:
yum install nodejs npm
那没关系。然后我按照上面链接和我见过的许多其他页面的建议安装了最新的npm。我的第一次尝试
sudo npm install -g npm
并不是那么好,原因有两个:
它安装在/usr/lib/node_modules
上,位于原始RPM安装的顶部。我认为这是非常糟糕的做法,因为下次我在系统上yum update
时,新安装的文件有可能被所包含的任何传入的RPM包覆盖,留下一个不圣洁的混乱。
无论如何它都没有用:我根本无法启动npm,它经常抱怨如上所述缺少依赖性。
所以我卸载了RPM,删除了所有剩下的文件,然后重新安装了RPM。这次我创建了一个~/.npmrc
文件并将其放入其中:
prefix = ${HOME}/.node_modules
我还设置了NODE_PATH环境变量来包含该路径。在此之后,npm确实将自己安装在我想要的位置,但没有安装任何依赖项:
$ npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 304 https://registry.npmjs.org/npm
/home/harmic/.node_modules/bin/npm -> /home/harmic/.node_modules/lib/node_modules/npm/bin/npm-cli.js
npm@3.3.3 /home/harmic/.node_modules/lib/node_modules/npm
从新安装的路径运行它会在页面顶部显示错误。
尽管我认为我必须做一些严重错误的事情,但我开始尝试一次安装一个未安装的依赖项:
npm install -g are-we-there-yet
npm install -g gauge
npm install -g os-tmpdir
npm install -g os-homedir
npm install -g is-absolute
npm install -g asap
npm install -g path-is-absolute
npm install -g builtins
npm install -g validate-npm-package-license
npm install -g concat-stream
npm install -g json-parse-helpfulerror
npm install -g readdir-scoped-modules
npm install -g debuglog
npm install -g lodash._baseclone
npm install -g lodash._bindcallback
npm install -g lodash._baseflatten
npm install -g lodash._baseuniq
...
仍然抱怨需要更多。
最后我得出结论,我一定错过了重要的事情,所以我决定寻求SO社区的帮助......
最初安装的node&amp; amp; npm RPMs是:
哦,如果您想知道,我首先尝试更新npm的原因是因为在尝试安装this package时遇到了构建错误,其解决方案显然是安装了更新了npm。
答案 0 :(得分:2)
首先,我建议您忘记使用RPM / APT等安装节点,原因是通常它们已经过时了。事实上0.10非常老,0.12已经快一年了,现在已经有4.1了。所以我的建议是使用nvm
https://github.com/creationix/nvm
nvm
是节点版本管理器。很酷的想法是你可以用一个命令切换版本并保持不断更新。安装所需的节点版本后,还可以升级npm。
您甚至可以为系统中的某个文件夹选择节点版本(例如,如果您的代码仅在旧版本中运行)