我正在尝试升级到最新版本的节点。我在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命令?


当前回答

所以,对于那些使用:

NVM和自制

请务必设置节点版本号。对我来说,我的节点版本已不再设置。所以,我检查了我使用的版本

nvm劳拉·舒尔茨

这列出了v16.13.1,所以我设置它使用这个

NVM使用16

一旦我的节点版本设置好,NPM命令又可以工作了

其他回答

你可以通过为npm和node创建符号链接来解决这个问题,这是快速而简单的:

sudo ln -s $(which npm) /usr/local/bin/npm
sudo ln -s $(which node) /usr/local/bin/node

我使用which来获取位置,然后将其作为变量传递给命令,例如$(npm)。

我也为node创建了一个符号链接,因为npm依赖于 节点。

然后你就可以:

sudo npm -v

不需要重新安装节点或在整个目录上使用chmod。

使用visudo将npm二进制路径添加到sudo路径并编辑“secure_path”

现在“sudo npm”工作了

我必须做到以下几点:

酿造更新 Brew卸载节点 访问https://nodejs.org/en/下载该文件 安装下载的文件

在全局安装包时解决EACCES权限错误

为了尽量减少权限错误的机会,你可以配置npm使用不同的目录。在本例中,您将在主目录中创建和使用隐藏目录。

备份你的电脑。 在命令行中,在你的主目录中,创建一个用于全局安装的目录:

 mkdir ~/.npm-global

配置npm使用新的目录路径:

 npm config set prefix '~/.npm-global'

在您首选的文本编辑器中,打开或创建~/。配置文件,并添加这一行:

 export PATH=~/.npm-global/bin:$PATH

在命令行,更新你的系统变量:

 source ~/.profile

要测试您的新配置,请在不使用sudo的情况下全局安装一个包:

 npm install -g jshint

在macOS上,这对我来说很管用:

brew reinstall node