获取 npm:找不到命令。已安装 Node 时如何重新安装 NPM? NPM 去哪儿了?
Posted
技术标签:
【中文标题】获取 npm:找不到命令。已安装 Node 时如何重新安装 NPM? NPM 去哪儿了?【英文标题】:Getting npm: command not found. How do I reinstall NPM when Node is already installed? Where did NPM go? 【发布时间】:2014-08-14 05:25:37 【问题描述】:我开始 Learn to Build Modern Web Apps with the AngularJS Tutorial 并很早就遇到问题。
我已经安装了节点:
/path/ang-news node -v
v0.10.26
我之前使用过 NPM,但在使用 Yeoman 时遇到了麻烦。不久前我重复了这些步骤,但 Grunt 停止了工作,所以我重新开始。
我跑了:
$ sudo npm install -g generator-angular
所有依赖项都在安装,直到我收到:
npm WARN package.json mongo@0.1.0 No repository field.
npm ERR! peerinvalid The package generator-karma does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer generator-angular@0.9.1 wants generator-karma@>=0.8.2
然后我尝试更新:
$ npm update -g
我应该以管理员身份运行它。我收到了大量错误消息,这似乎是最相关的:
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 13.1.0
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "update" "-g"
npm ERR! cwd /path/ang-news
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! not ok code 0
然后我尝试卸载 generator-karma 并重新开始:
$ sudo npm uninstall -g generator-karma
但收到:
sudo: npm: command not found
$ npm -v
-bash: /usr/local/bin/npm: No such file or directory
我的第一个问题是:为什么 NPM 突然消失了?
[编辑:感谢@try-catch-finally 指出在发出命令时在普通用户和 sudo 之间切换时所造成的破坏。原来是我搞砸了我的用户环境,不再安装 NPM。]
我的理解是安装 Node 时会安装 NPM,所以我的第二个问题是:我如何只重新安装 NPM?我宁愿不必从头重新安装 Node。
[编辑:感谢@hawk 和@try-catch-finally - 似乎单独安装 NPM 不是一个选项,但有 easy ways to reinstall both.]
【问题讨论】:
我认为不可能。唯一可能的答案是完全重新安装节点。 @hawk 谢谢。真可惜。很高兴能弄清楚这种情况是如何发生的以及为什么会发生,这样我以后就可以避免它了。 你为什么把普通用户和root用户的命令搞混了?$ npm update -g
你写的看起来不对,如果你处理全局包,你也需要以 root 身份运行它。有趣的是:然后您使用了sudo
,但又执行了另一个npm
命令。也许你搞砸了用户环境?你能检查一下/usr/local/bin/npm
真的不存在吗?请尝试find /usr
它。关于原始错误Peer generator-angular@0.9.1 wants generator-karma@>=0.8.2
:看起来generator-angular
家伙更新了仓库中不存在的依赖项(我遇到了这样的问题)。
@Rotimi:+1 用于找出将来避免它的原因!不幸的是,如果确实出现了问题,您将需要重新安装 t0,然后尝试重现您同时观察系统的步骤。 :/ -- 你是否使用./configure; make; make install
自己构建了node + npm?谁拥有/usr/local/bin/npm
? root.root
?
find /usr
(find
和路径之间的空格)!请在你的脑海中飞翔;)也请发出whereis node
和whereis npm
以显示提供node
和npm
的所有路径。 --- 请通过编辑将您的观察添加到您的帖子中!
【参考方案1】:
-
如果有工作节点,可以重新安装npm
curl -L https://npmjs.org/install.sh | sudo sh
很遗憾,npm update -g
没有达到任何人的预期。解决此问题已在 npm 路线图中,但需要一段时间。
您几乎不需要全局安装包,除非(如generator-angular
或grunt-cli
)您想将该包用作命令。
【讨论】:
【参考方案2】:以防万一您使用 brew 完成了此操作,我推荐 github 上的这篇文章。将为您节省大量时间。
https://gist.github.com/DanHerbert/9520689
为 Homebrew 用户修复 Mac OS X 上的 npm 运行以下命令删除所有现有的全局 npm 模块,卸载 node 和 npm,使用正确的默认值重新安装 node,将 npm 安装为自己的 pacakge,并配置要安装的全局 npm 模块的位置。
rm -rf /usr/local/lib/node_modules
brew uninstall node
brew install node --without-npm
echo prefix=~/.node >> ~/.npmrc
curl -L https://www.npmjs.com/install.sh | sh
此时应正确安装 Node 和 npm。最后一步是将 ~/.node/bin 添加到 PATH 中,以便全局安装的命令可用。我将此行添加到我的 ~/.path 脚本中,该脚本通过 ~/.bash_profile 运行。按原样运行以下行。
export PATH="$HOME/.node/bin:$PATH"
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review @ValentinLorentz 我很抱歉,有更新。让我知道它是否看起来不错。【参考方案3】:在 redhat 7.1 上执行命令以安装最新版本的 npm 后,我遇到了完全相同的问题:
npm install npm@latest -g
经过一些尝试,我找到了解决方案:
yum reinstall npm
我希望这可以帮助 redhat/centos 用户。
【讨论】:
以上是关于获取 npm:找不到命令。已安装 Node 时如何重新安装 NPM? NPM 去哪儿了?的主要内容,如果未能解决你的问题,请参考以下文章