如何在macOS上更新npm

Non*_*714 32 macos npm

由于我不知道的原因,我无法在macOS上更新到最新版本的npm(它在Windows上运行正常).它没有显示错误,只显示"更新的1个包".

使用Node.js 8.11.1

node -v
v8.11.1
Run Code Online (Sandbox Code Playgroud)

我有什么版本的npm?

$ npm -v
5.6.0
Run Code Online (Sandbox Code Playgroud)

我试过这个......

$ npm i -g npm
+ npm@5.8.0
updated 1 package in 7.37s
Run Code Online (Sandbox Code Playgroud)

它无法更新.

$ npm -v
5.6.0
Run Code Online (Sandbox Code Playgroud)

npm在哪里?

$ which npm
/usr/local/bin/npm
Run Code Online (Sandbox Code Playgroud)

所以我试试brew......

brew install npm
Run Code Online (Sandbox Code Playgroud)

它失败了......

$ npm -v
5.6.0
Run Code Online (Sandbox Code Playgroud)

*然后我尝试了这个......*

npm install npm@latest -g
+ npm@5.8.0
updated 1 package in 7.618s
Run Code Online (Sandbox Code Playgroud)

它失败了......

npm -v
5.6.0
Run Code Online (Sandbox Code Playgroud)

sudo:

sudo npm i -g npm
+ npm@5.8.0
updated 1 package in 7.794s
Run Code Online (Sandbox Code Playgroud)

它失败了......

npm -v
5.6.0
Run Code Online (Sandbox Code Playgroud)

这也失败了......

sudo npm install npm@latest -g
Run Code Online (Sandbox Code Playgroud)

我按照此问答中指示,从我的系统中完全删除了npm和节点,并从头开始重新安装它们,它也无法更新.


截图,每个请求:

在此输入图像描述


关闭终端,然后重新打开终端并运行:

$ npm -v
5.6.0
Run Code Online (Sandbox Code Playgroud)

sudo 两次:

$ sudo npm i -g npm
+ npm@5.8.0
updated 1 package in 7.478s
$ sudo npm i -g npm
+ npm@5.8.0
updated 1 package in 7.434s
Run Code Online (Sandbox Code Playgroud)

也失败了:

$ npm -v 
5.6.0
Run Code Online (Sandbox Code Playgroud)

我错过了什么?这里发生了什么?

mar*_*rlo 41

这适用于我的Mac.

基于docs https://docs.npmjs.com/troubleshooting/try-the-latest-stable-version-of-npm:

npm install -g npm@latest
Run Code Online (Sandbox Code Playgroud)

文档上有一个说明取决于您的安装方法,您可能会添加一些sudo.

在*nix上升级(OSX,Linux等)

(您可能需要使用sudo为这些命令添加前缀,尤其是在Linux或OS X上,如果您使用其默认安装程序安装了Node.)

  • `sudo npm install -g npm@latest` 就像魔术一样 (10认同)
  • 你永远不应该使用 sudo 安装 npm,它只会在以后的某个地方引起更多的权限问题。有很多方法可以在不使用 sudo 的情况下安装 npm,brew 就是其中之一,但通过 google 可以了解更多。 (7认同)

小智 19

就我而言,只有以下内容有帮助:

sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf ~/.npm
brew uninstall --ignore-dependencies node
brew install node
Run Code Online (Sandbox Code Playgroud)

11 月 21 日编辑:这些天,我完全绕过brew并使用“n”:

https://www.npmjs.com/package/n

所以我也可以在版本之间进行更改。


小智 13

也许你已经解决了这个问题,但这就是我在遇到这个问题时发现的问题.我安装了2个版本的npm.

我验证了这一点如下:

grep \"version\" ~/.npm-packages/lib/node_modules/npm/package.json

  "version": "6.2.0"

grep \"version\" /usr/local/lib/node_modules/npm/package.json

  "version": "5.6.0",
Run Code Online (Sandbox Code Playgroud)

我通过更新bash配置文件中的路径解决了这个问题,但想知道为什么(如何)我最终得到了2个版本.这是更新:

tail -2 ~/.bash_profile

NPM_PACKAGES="${HOME}/.npm-packages"

PATH="$NPM_PACKAGES/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

  • 我认为人们忽略了这个解决方案的作用点。删除 `/usr/local/lib` 路径并从 .npm-packages 管理 npm,因为它应该是。 (2认同)

小智 7

npm install -g npm@latest 工作正常!!您也可以将最新版本替换为特定版本,例如 npm install -g npm@5.6.0

希望对您有所帮助!!!


Cha*_*lje 6

就我而言,以前的答案都不起作用。对我来说,一个可行的解决方案是一个简单的五步过程。

  1. 确保安装了(旧版本的)npm。

npm -v

如果未安装 npm,则使用Node.js在 Mac 上安装它。

  1. 全局安装所需版本的 npm。
npm install -g npm@latest
Run Code Online (Sandbox Code Playgroud)

该命令使用旧版本的 npm(由 Node 安装),在~/.npm-global/. 安装后,关闭并打开一个新的终端外壳。

  1. 删除Node安装的旧版npm
rm -r /usr/local/lib/node_modules/npm/
Run Code Online (Sandbox Code Playgroud)

有时这不起作用,所以我不得不进入finder删除/npm/文件夹。

  1. 确保设置正确的路径变量。
echo $PATH
Run Code Online (Sandbox Code Playgroud)

如果~/.npm-global/bin冒号之间没有出现,则更新路径变量。~/.zshrc在文本编辑器中打开并添加以下行。如果您不使用 zsh,请打开相应 shell 的配置文件(即~/.bash_profile

export PATH=$PATH:$HOME/.npm-global/bin
Run Code Online (Sandbox Code Playgroud)

保存更改并关闭文本编辑器。

  1. 关闭并重新打开终端 shell 并运行npm -v以检查 npm 是否在最新版本上正确。

更新路径变量的原因是因为 npm cli 建议您更新 npm npm install -g npm,它将在与 Node 最初安装 npm 的位置不同的位置安装 npm。


Vih*_*ala 5

我遇到了同样的问题。您可能已经安装了 npm 版本,现在是时候安装新的 npm 版本了。您可以按照以下步骤操作。

  1. sudo nano /usr/local/lib/node_modules/npm/package.json
  2. 更改"version" : "5.6.0""verison": "5.8.0"

  • 这只会更改 CLI 上报告的版本,而不是实际使用的版本。 (2认同)

Mr.*_* 14 5

就我而言,我用来nvm管理不同版本的node. 为了升级 npm 版本,我必须

1 - 通过导航到当前版本的节点来安装最新版本的 npm

cd ~/.nvm/versions/node/v10.9.0
npm install npm
Run Code Online (Sandbox Code Playgroud)

或者你可以使用

nvm install-latest-npm
Run Code Online (Sandbox Code Playgroud)

2 - 编辑$PATH以指向您当前的版本node

NPM_PACKAGES="${HOME}/.nvm/versions/node/v10.9.0"
PATH="$NPM_PACKAGES/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)