我一直在使用NVM为我的Node.js工作安装最新版本的Node.js。它完全可以安装不同的版本并在它们之间切换。它还在每个本地…安装最新版本的NPM。/bin文件夹和Node.js二进制文件。然而,似乎没有办法切换我正在使用的NPM版本(或者至少我不能弄清楚)。

我自己能想到的唯一解决方案是删除默认的二进制文件(这是我第一次用NVM安装节点时安装的NPM),并在其位置放置最新的NPM二进制文件。然而,有没有更好的方法来做到这一点呢?


当前回答

你可以使用nvm安装两个版本的Node.js,并在每个Node.js环境中安装不同版本的npm。

例如,nvm install 14.18.0和nvm install 14.18.1将安装两个独立的Node.js环境。

在14.18.0中,你可以使用npm v6(默认安装)。 在14.18.1中,你可以使用npm v7(使用npm install -g npm@7安装)。

这样,你就可以轻松地切换到不同的npm版本。

nvm use 14.18.0

    Now using node v14.18.0 (npm v6.14.15)

nvm use 14.18.1

    Now using node v14.18.1 (npm v7.24.2)

其他回答

NVM不处理npm。

如果你想安装node。js 0.4。x(许多包仍然依赖于它)并使用NPM,你仍然可以使用NPM 1.0.x。

安装Node.js 0.6。X (NPM 1.1.x附带),然后用NPM安装NVM:

npm install nvm
. ~/nvm/nvm.sh

安装Node.js 0.4。X与nvm:

nvm install v0.4.12
nvm use v0.4.12

使用Install .sh安装npm(注意重定向后的-L参数):

curl -L https://npmjs.org/install.sh | sh

这将检测Node.js 0.4.12,并在~/nvm/v0.4.12/lib/node_modules文件夹中安装npm 1.0.106,并为nvm创建一个符号链接:

~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js

如果你尝试运行npm,它仍然会给出一个错误,但如果你再次使用v0.4.12,它现在应该可以工作了。

我用的是Windows,这些东西都不能用。我不断得到关于文件的错误。不过这个方法奏效了:

cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js i -g npm@latest

cd %APPDATA%\nvm\v8.10.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old

然后,我又开始工作了。

为了在使用nvm时改变你的npm版本,你必须只在需要的Node.js版本的文件夹中安装你的npm版本。例如,如果你想安装npm 8.12.1版本,你必须在节点版本文件夹中安装。

如果你在全球范围内这么做,那就行不通了。

更改版本的简单方法是首先使用

nvm ls

然后从列表中选择一个版本

nvm use version

在我的例子中,我在一个被nvm设置为版本10的Node.js环境中将npm从版本6更新到版本8。这导致npm不再工作,使我在这里找到的答案毫无用处。

最后我清除了nvm文件夹:

rm -rf ~/.nvm/versions/node/*

之后我可以再次使用nvm和npm。我的经验是:永远不要用npm安装一个新的npm版本。NVM install-latest-npm似乎可以让你在遗留环境中安全更新。