如何使用nvm更改npm的版本?


239

我一直在使用NVM为节点工作安装最新版本的nodeJS。对于安装单独的版本并在它们之间进行切换,它完全可以正常工作。它还将在每个本地... / bin文件夹中安装NPM的最新版本以及节点二进制文件。但是,似乎没有任何方法可以切换我正在使用的NPM版本(或者至少我无法弄清楚)。

我能想到的唯一解决方案是删除默认的二进制文件(这是我第一次使用NVM安装节点时安装的NPM),并放置最新的NPM二进制文件。但是,我想知道是否还有更好的方法可以做到这一点。


1
为什么要更改NPM的版本,这并不像您要安装仅适用于旧版本NPM的软件包。在节点0.6之后,节点附带了最新的NPM。因此,更改节点版本也会更改npm版本。
Farid Nouri Neshat 2012年

1
除非它不是通过NVM。是的-节点是NPM附带的,但这仅表示它在其旁边安装了二进制文件。我可以在各自的文件夹中看到两个二进制文件,但是当我运行“ nvm use v0.6.13”时,正在使用的npm二进制文件仍然是与较旧版本的节点一起安装的二进制文件,而不是与最新版本一起安装的二进制文件。
thisissami 2012年

1
这是npm的代码:github.com/creationix/nvm/blob/master/nvm.sh#L135-148,从0.6开始就不需要了,所以也许您应该尝试删除该部分。那应该有帮助。您也可以在github上创建问题。
Farid Nouri Neshat 2012年

我工作的这个问题,现在,任何帮助赞赏- stackoverflow.com/questions/50976138/...
亚历山大·米尔斯

Answers:


330

编辑:自从首次回答此问题以来已有数年,如新答案中所述,现在有一个命令可用于:

nvm现在有一个更新npm的命令。是nvm install-latest-npmnvm install --latest-npm

nvm install-latest-npm:尝试升级到npm当前节点版本上的最新版本

nvm install --latest-npm:安装后,尝试在给定的节点版本上升级到最新的工作npm

以下是此问题正确答案的先前版本。

在首次提出此问题后的三年中,现在的答案似乎要简单得多。只需更新nvm安装的版本(位于)即可~/.nvm/versions/node/[your-version]/lib/node_modules/npm

我刚刚安装了npm 2.14.7附带的节点4.2.2,但是我想使用npm3。所以我做到了:

cd ~/.nvm/versions/node/v4.2.2/lib
npm install npm

简单!

是的,这应该适用于要成为特定版本的节点“全局”的任何模块,而不仅仅是npm。


编辑1:在最新版本中,它npm -g很聪明,并且将模块安装到上面的路径中,而不是系统全局路径中。


感谢@philraj在评论中指出这一点。


13
对于像我这样不知道自己的nvm在哪里的用户,请运行which npm
拉里

16
如果您想要的不是最新版本的npm,请运行npm install npm@major.minor.patch以获取该特定版本,例如npm@3.10.9
Michael

2
nvm-windows也有类似的作品,例如cd ~/AppData/Roaming/nvm/v5.10.1
absynce

2
对于将nvm用于Windows的任何人,都可以执行上述操作(运行npm install npm),但是在Windows的节点安装位置。在Windows 10中,这是〜/ AppData / Roaming / nvm / [您的版本]。即Users \ myusername \ AppData \ Roaming \ nvm \ v9.7.1
Sean Holmesby 18-3-28

3
更简单:nvm install-latest-npm由samlandfried回答如下- stackoverflow.com/a/47519162/5991278
philraj

43

nvm不处理npm。

因此,如果要安装节点0.4.x(许多软件包仍依赖该节点)并使用NPM,则仍可以使用npm1.0.x。

安装节点0.6.x(npm 1.1.x随附),并使用npm安装nvm:

npm install nvm
. ~/nvm/nvm.sh

使用nvm安装节点0.4.x:

nvm install v0.4.12
nvm use v0.4.12

使用install.sh安装npm(请注意-L参数以进行任何重定向):

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

这将检测节点0.4.12并将npm 1.0.106安装在〜/ nvm / v0.4.12 / lib / node_modules文件夹中,并为nvm创建符号链接

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

如果您尝试运行npm,它仍然会给出错误,但是如果您nvm use v0.4.12再次执行,它现在应该可以工作。


3
谢谢!请注意,该网址已更改为: curl https://npmjs.org/install.sh | sh
tristen 2012年

7
现在这是一个很老的答案吗?我的npm由nvm自动下载为我正在使用的节点版本的依赖项。
戴蒙·史密斯

2
是的 老了 如果您仍在使用节点0.4和旧的nvm,则可能会看到此问题。
fijiaaron

1
URL再次更改为强制www。使用curl -L遵循重定向。
Neal Ehardt

32

nvm现在有一个更新npm的命令。是nvm install-latest-npmnpm install --latest-npm


3
您是否有指向此文档的链接?
allicarn

1
nvm help控制台输出:不过, --latest-npm After installing, attempt to upgrade to the latest working npm on the given node version我在nvm文档中没有找到对此的引用。如果发现它,请分享。
samlandfried

谢谢!确实应该将其标记为正确答案。
philraj

它仅适用于32位
涅金Basiri

30
npm install npm@x.x.x -g
npm install npm@5.4.0 -g

2
尽管问题是关于nvm的,但实际上我是来这里的,谢谢。正在投票。
Atrahasis

26

我在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

繁荣起来,我又恢复了业务。


3
谢谢,这在Windows上也对我有用。(存在相同的文件冲突问题)
Venryx

1
为我工作。我在Windows上使用nvm来管理节点,并希望在切换到节点版本后提升nvm。必须以提升的权限运行控制台。我的路径nodejs文件夹是“ C:\ Program Files \ nodejs”,这是我的计算机上nvm用来缓存下载内容(不是APPDATA)的另一个位置的别名,猜想我在安装nvm时选择了另一个位置。
Moika翻

2
谢谢,他们可能需要修复nvm Windows上每个旧nodejs版本上npm更新的方式。
rbinsztock

1
这帮助我更新了Node 10.x随附的npm。谢谢!
andypotato

2
在使用nodejs v10.15.3的Windows上工作时,必须更改mvrenand rmto deland rmdirfor me。
deerchao

17

在基于Linux的操作系统上更改npm版本并不是一个简单的命令过程。我已经完成以下操作,以切换回旧版本的npm。这应该可以使任何版本的npm正常工作。首先安装您要使用的npm版本:

sudo npm install -g npm@X.X.X

删除/ usr / local / bin /中的符号链接

sudo rm /usr/local/bin/npm

使用所需的npm版本重新创建符号链接

sudo ln -s /usr/bin/npm@X.X.X /usr/local/bin/npm

1
按照以下说明尝试从2.14.7升级到2.15.9,现在当我键入npm -v时,我得到3.8.6。该死
凯尔·贝克

3
在尝试了几件事之后,对我来说,仅使用就能sudo npm install -g npm@x.x.x使我从响应该版本npm -v。无论如何,这至少可以从4.x升级到2.15.9。
凯尔·贝克

1
就我而言,sudo npm install -g npm@4.6.1仅安装4.6.1,但仍使用npm 5.1.0。您的提示可以帮助我切换到4.6.1。
洪庄

8

通过查看www.npmjs.com/install.sh,我发现可以通过设置环境变量来安装特定版本

export npm_install="2.14.14"

然后按照npmjs.com所述运行下载脚本:

curl -L https://www.npmjs.com/install.sh | sh

如果省略设置npm_install变量,则它将安装他们标记为最新的版本。


2
我必须使用curl -L https://www.npmjs.com/install.sh | sudo shaaaa,并且此方法不起作用,即使我已导出所述环境变量,也无法获得最新版本。可恶。我想要2.14.7的2.15.9版本,下面的答案将我设为3.8.6,现在这个答案将我设为4.0.2。WTF。
凯尔·贝克

6

在Windows中,以管理员身份运行终端(以防我遇到权限问题)。然后使用特定的节点版本(例如7.8.0)

nvm use 7.8.0

然后通过以下方式将您的npm更新为所需的特定版本

npm install -g npm@5.0.3


2

上述说明略有变化,对我有用。(MacOS Sierra 10.12.6)

npm install -g npm@3.10.10
rm /usr/local/bin/npm
ln -s ~/.npm-packages/bin/npm /usr/local/bin/npm
npm --version


0

nvm-windows在现有Node安装之上进行安装后,我遇到了同样的问题。解决方案只是按照说明进行:

您还应该删除现有的npm安装位置(例如“ C:\ Users \ AppData \ Roaming \ npm”),以便正确使用nvm安装位置。

安装与升级


0

Windows上的NVM安装和使用

以下是在Windows上安装NVM的步骤:

NVM代表节点版本管理器,它将帮助您将节点版本切换为特定用途。它还允许用户使用多个npm和节点版本。

安装nvm安装程序。使用命令“ nvm list”检查已安装节点版本的列表。键入“ nvm使用版本号[6.9.3]”以切换版本。欲了解更多信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.