安装Node后,NPM命令未找到

38

我在使用npm命令时遇到了很大的麻烦,不幸的是我的unix知识不足以自行解决这个问题。 我所做的就是brew install node,但是我得到以下错误:

当我输入npm时,我会得到zsh:command not found: npm的提示。

我查看了更多关于这个问题的信息,发现了这个stack overflow答案:

Command not found after npm install in zsh

根据其建议,我尝试将 export PATH=/usr/local/share/npm/bin:$PATH 添加到我的.zshrc文件中,但是在输入npm时仍然出现相同的错误。

我可以确认它在路径中echo $PATH输出结果为:/Users/nicholashaley/.rbenv/shims:/Users/nicholashaley/.rbenv/bin:/Applications/Postgres.app/Contents/Versions/9.3/bin:/usr/local/heroku/bin:/usr/local/share/npm/bin:/usr/local/bin:/Applications/Postgres.app/Contents/Versions/9.3/bin:/usr/local/heroku/bin:/Users/nicholashaley/.rbenv/shims:/usr/local/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

我也可以确认已经安装了node node -v输出结果为:v0.12.2

有任何想法吗? 我被卡住了。


卸载和重新安装Node都没有起作用,所以我清除了/usr/local/lib/node_modules目录(使用sudo rm -rf /usr/local/lib/node_modules)解决了问题。 - Warren P
8个回答

48

虽然不是答案,但也许是解决方案...

通过brew卸载Node: brew uninstall node

然后从https://nodejs.org/en/download/下载并安装Node。

npm应该就可以“正常工作”了。


1
在尝试这个之前,我尝试了brew postinstall,但效果不太好。上面的方法更好,因为它除了node之外还照顾了npm。非常感谢。 - Pravin W
1
这个方法不起作用,但是在卸载后立即执行 sudo rm -rf /usr/local/lib/node_modules 后,它就可以工作了。 - BrotherDonkey

42

我遇到了同样的问题,但最终以下方法对我起作用了,而且不需要使用sudo

$ brew update
$ brew uninstall node
$ brew install node
$ chown -R YourUserName /usr/local/lib/node_modules/
$ brew postinstall node #This what the important step

1
在我的情况下,postinstall 要求 sudo 权限,但是 brew 不喜欢它 :( - Volatil3
2
这个有帮助,但在最后一步之前我应该做https://dev59.com/An_aa4cB1Zd3GeqP00IR#3KqfEYcBWogLw_1b90i- - yanik
1
错误:/usr/local 不可写。您应该将 /usr/local 的所有权和权限更改回您的用户帐户: - Rajesh Maurya
@Venkat.R 非常感谢你,兄弟。我是Mac的新手,你帮我节省了很多时间。 - Abhishek Shukla
对于 chown 命令,我需要在前面加上 sudo,否则操作是不允许的。这修复了我安装的 Homebrew 的 node/npm,谢谢。 - JulianHarty

18

好的,这是对我有效的方法:

$ brew update
$ brew uninstall node
$ brew install node
$ sudo brew postinstall node #This what the important step

8
sudo brew不是一个好主意... 这是我得到的错误: 错误:懦弱地拒绝 \sudo brew postinstall` 你可以使用sudo来运行brew,但是只有当brew可执行文件归属于root时才可以。 然而,这既不推荐也完全不支持,因此这样做要自担风险。` - Litome
同意 - 你不应该需要运行 $ sudo brew ... - Andrew Hendrie
我也遇到了同样的问题。不确定。在跟随了三个步骤之后,我的npm命令仍然找不到。 - Venkat.R
没有使用第四个命令的sudo解决了我的问题。让我更新为单独的答案以供参考。 - Venkat.R
在我的情况下,我需要安装完整版本: brew postinstall homebrew/versions/node4-lts; - ownking
1
postinstall 对我很有用,但不需要使用 sudo。相反,将无法访问的文件/目录的所有权更改为您自己的管理员用户(例如:我:admin)。 - yair

9
如果这个问题从未得到解决,这是我找到的解决方法:
  1. brew uninstall node
  2. brew install node
  3. brew doctor 查看需要修剪的部分。我的问题在于有一个非brew的地方,我改变了npm包的安装位置,因为我想让npm包为我安装。这是一个错误(忘记了我最初是通过brew安装了node和npm,但现在brew无法到达npm安装目录,也无法更改或删除它)。所以,即使符号链接被删除了,brew prune 也不起作用,但它提醒我已经改变了npm的安装位置。于是就有了下面的步骤:

  4. 删除这些目录

  5. brew postinstall node
希望能对您有所帮助。

4
我发现这篇文章非常有用,它提供了详细的步骤:
https://www.dyclassroom.com/howto-mac/how-to-install-nodejs-and-npm-on-mac-using-homebrew

此外,在按照上述文章中列出的所有步骤之后,虽然node可以正常工作,但我的电脑仍然提示“找不到命令:npm”。接着我运行了以下两个命令,npm就可以正常工作了。
sudo chown -R myusername:myusergroup /usr/local/lib/node_modules
brew postinstall node

这个工作正常。有时候,brew postinstall node命令不会运行。所以,在运行第一个命令后,node -v 命令会给你正确的node版本,但是你试着运行npm命令时会返回“未找到npm”。而运行“brew postinstall node” 命令会为你解决这个问题。 - Balu
尝试了以上所有步骤后,终于成功了。谢谢。 - demiculus

0

使用LTS版本的任何人,请改用以下命令:

brew postinstall node@6

0
通常情况下,npm应该与node可执行文件在同一个目录中,可以通过which node命令来确定。检查此目录是否包含在您的PATH中。如果是通过nodenvnvm等node版本管理器安装的,请查阅文档以了解如何将这些可执行文件添加到路径中。
使用nodenv,可以执行以下操作:
eval "$(nodenv init -)"

0

在Gist中的问题细节以及我如何解决它

  1. Installed nodeJs via nvm using Git Bash
  2. Installed hyper terminal & WSL
  3. Installed Ubuntu (windows Store) & configured zsh shell. 
  4. Faced the command not found all over in the zsh shell
  5. The same commands are working nicely in the bash shell

尝试在 .zshrc 和 .profile 文件中获取 (node、nvm、npm) 路径,并修改 Windows 中的系统和环境变量。但是这些步骤都没有帮助我解决问题。
我认为问题在于 zsh 和 bash 终端对待事物的方式不同。当在 bash 终端中安装时,Windows 中 nodeJs 的默认位置将被设置为...
C:\Users\Program Files\nodejs

上面的一个是符号链接到C:\Users\<username>\AppData\Roaming\nvm

无论我如何在zsh中别名这些东西,只有node和nvm与别名一起工作。npm无法找到必要的lib文件。

唯一对我有效的解决方案是在zsh终端中重新安装node

  1. 在Bash终端中删除通过nvm安装的node版本。
  2. 通过控制面板在Windows中删除nvm
  3. 在zsh shell中安装nvm
  4. 安装最新LTS版本的node,其中也安装了npm。

在Zsh中通过nvm安装node之后,我观察到以下几点。

  1. 已经自动将节点(node)、nvm、npm和npx的路径添加到$PATH变量中。
  2. 节点目录既不在C:\Users\Program Files\nodejs中,也不在C:\Users\{username}\AppData\Roaming\nvm中。
  3. 相反,它在/home/<username>/.nvm/versions/node/v14.15.1/bin/node中进行了配置。

这个视频帮助我在ZSH中重新安装节点:https://www.youtube.com/watch?v=kL8iGErULiw


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接