我正在尝试升级到最新版本的节点。我在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://stackoverflow.com/a/5062718/1246159上尝试了解决方案

但还是得到相同的错误。我还查看了/etc/sudoers文件,相关行是:

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

在我看来这很好。我怎么可能得到NPM工作与sudo命令?


当前回答

我的解决方案是:

sudo -E env "PATH=$PATH" n stable

对我来说没问题。

在这里找到它:https://stackoverflow.com/a/29400598/861615

这是因为您更改了默认的全局包目录

其他回答

为了在sudo权限下全局安装npm包,/usr/bin/npm应该是可用的。如果npm存在于其他目录,创建一个像这样的软链接:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

它适用于Fedora 25、node8.0.0和npm5.0.0

如果你用nvm安装node/npm,在使用任何一个包之前都必须运行nvm环境配置文件。

这通常在~/.nvm/nvm.sh中找到。

要自动运行,包括:

source ~/.nvm/nvm.sh

在您的用户的.bash_profile文件中

如果希望对该用户使用sudo,请确保包含-i参数以使sudo设置用户环境。如

sudo -iu jenkins npm install grunt-cli

在情况下可能是有用的任何人使用rh-*包,这为我工作:

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

而不是重新安装节点,这似乎是公认的解决方案,问题是没有权限到nodejs文件夹/usr/local。 输入如下命令sudo chmod -R 777 /usr/local/nodejs/

I had the same issue,the reason for it was npm package manager was not installed while installing node. This was caused because of the following mistake: In the installation process there is a step called "Custom Setup", here you have the option to choose one of the following: 1) Node.js runtime (This is selected by default). 2) npm package manager 3) Online documentation shortcuts. 4) Add to Path. If you proceed as it is npm package manager will not be installed and hence you will get the error.

解决方案: 当你得到这些选项时,选择npm包管理器。 这对我很管用。