sudo: npm: 命令未找到。

367

我想升级到最新版本的node。我正在按照http://davidwalsh.name/upgrade-nodejs上的说明进行操作。

但是当我执行以下操作时:

sudo npm install -g n

我遇到了以下错误:

sudo: npm: command not found

npm无需使用sudo。当我执行以下操作时:

whereis node

我看到:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

运行中:

which npm

显示:

/usr/local/node/bin/npm

我尝试了https://dev59.com/hG445IYBdhLWcg3wOnrW#5062718上的解决方案,但是我仍然遇到同样的错误。我还查看了/etc/sudoers文件,相关行是:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

我认为这看起来很好。我该如何使用sudo命令使NPM工作?


6
这个命令可以吗?sudo /usr/bin/npm install -g n - robertklep
2
你可以尝试重新安装Node吗?听起来好像你删除了npm。 - Jeff Sloyer
1
你可能已经将/usr/local/node/bin添加到了 $PATH 中,但是 npm 应该安装在 /usr/local/bin中。第一个目录不在 secure_path 中,这就解释了为什么 sudo 找不到它。 - robertklep
8
在Ubuntu上使用nvm - 根据@robertklep的评论,我尝试了sudo/home/${user}/.nvm/version/node/${version}/bin/npm install,并且它起作用了。 - Stav Geffen
2
通过从以下软件包重新安装解决了我的问题。https://nodejs.org/en/download/ - Marghoob Suleman
显示剩余10条评论
31个回答

0

自从我使用可在node.js上使用的.tar文件安装了node.js之后,我不得不将node目录的位置放在:

~/.bashrc

通过使用以下命令从普通用户更改为root用户:

sudo -i

然后我不得不将提取节点的路径添加到.bashrc文件中,如下所示:

enter image description here

然后使用以下命令刷新.bashrc:

. ~/.bashrc

之后就可以了。

npm: command not found

离开了


0

使用 visudo 和编辑 "secure_path",将 npm 二进制路径附加到 sudo 路径中

现在 "sudo npm" 可以使用了


0
我遇到了同样的问题,原因是在安装node时没有安装npm包管理器。这是由于以下错误引起的: 在安装过程中有一个名为“自定义设置”的步骤,在这里您可以选择以下选项之一: 1)Node.js运行时(默认情况下选择)。 2)npm包管理器 3)在线文档快捷方式。 4)添加到路径。 如果按照默认设置进行安装,则不会安装npm包管理器,因此您将收到错误消息。
解决方案: 当您看到这些选项时,请选择npm包管理器。 这对我起作用了。

0

不需要再次安装node,这似乎是被接受的解决方案,问题在于没有权限访问nodejs文件夹/usr/local。
输入以下命令:sudo chmod -R 777 /usr/local/nodejs/


0
在我的情况下,安装了一些Python模块后,我突然开始收到消息说node未安装或未被识别为命令。检查后,我的路径已在.bashrc中注册。因此,我对该文件进行了源代码处理,然后一切都重新开始工作了。 source .bashrc

0
对我来说,使用Homebrew提到的任何方法都无法在macOS上工作。因此,我使用Homebrew卸载了node,并从https://nodejs.org/en/download/下载了node软件包并安装它。它非常好用。

-1

完全删除节点:

  brew uninstall --force node

重新安装:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'

-1

如果有人使用 rh-* 软件包,这对我很有用:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm

-2

如果您正在使用Linux,请删除位于/usr/lib中的node_modules文件夹。

sudo rm -rf node-modules

然后使用curl重新安装node:

sudo apt-get update
sudo apt install curl build-essential
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs

6
更好的帮助方式是提供为什么这是首选解决方案的解释,并说明其如何工作。我们想进行教育,而不仅仅提供代码。 - the Tin Man

-3

我的解决方法是以root用户身份登录,现在我不必再使用sudo了

su root

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