如何使用nvm正确升级node版本

442

有没有可能直接在原地升级node,而不是手动安装最新的稳定版本?

我已经使用node.js版本5.0nvm进行了安装,但现在我想将其更新到5.4。我尝试避免手动重新安装所有全局包(例如通过运行npm install -g grunt-cli bower yo yoman-angular-generator blabla blablablabla...)。


安装最新版本的NVM是否会删除旧版本? https://github.com/nvm-sh/nvm - vikramvi
@vikramvi 感谢您的评论;问题暗示了使用 nvm 升级 node,而不是升级 nvm 本身。 - Boris Burkov
11个回答

599

这可能有效:

nvm install NEW_VERSION --reinstall-packages-from=OLD_VERSION

例如:

nvm install 6.7 --reinstall-packages-from=6.4

然后,如果您愿意,可以使用以下方法删除先前的版本:

nvm uninstall OLD_VERSION

在您的情况下,

NEW_VERSION = 5.4

OLD_VERSION = 5.0。

或者尝试:

nvm install stable --reinstall-packages-from=current

1
使用 nvm install stable 命令是否会删除所有已安装的包,包括已安装的 Node.js,还是只会更新它们? - Syed
1
实际上,这个不再起作用了。npm有一个问题:https://github.com/creationix/nvm/issues/811 - jhuesos
9
通过运行命令 nvm ls-remote,您可以查看所有可用的版本。 - Daniel
29
这对我很有效:nvm install node --reinstall-packages-from=$(nvm current)。这将会更新Node.js到最新版本,并重新安装之前版本的npm全局包。 - cyfrost
如果你无法卸载,请使用 "nvm deactivate" 然后再试一次。 - izilotti

351

您可以更简单地运行以下其中一个命令:

最新版本

nvm install node --reinstall-packages-from=node

稳定版(LTS):(如果当前正在使用)

nvm install "lts/*" --reinstall-packages-from="$(nvm current)"

这将安装适当的版本并重新安装当前使用的节点版本中的所有软件包。

这样可以避免手动处理特定版本。


感谢@m4js7er对LTS版本的评论。


27
如果你想升级到最新的稳定版本(lts - 推荐大多数用户使用),那么你应该运行:nvm install lts/* --reinstall-packages-from=node。之后,你可以用 nvm uninstall [旧版本] 清理你的版本。你可以用 nvm ls 列出所有安装的版本。 - m4js7er
3
我输入了命令nvm install lts/* --reinstall-packages-from=node,但出现错误提示说版本‘lts/*’未找到 - 尝试‘nvm ls-remote’查看可用版本。我使用的是NVM版本0.30.1,可能太旧了。最后我手动将lts/*替换为10.15.2/*才能让它正常工作。 - Zhang
9
如果你在使用默认的zsh shell的OSX系统上,并且收到了“zsh: no matches found: lts/*”错误提示,只需将lts/参数用引号括起来,以防止Z shell将解释为globbing通配符:nvm install 'lts/*' --reinstall-packages-from=node - tenni
我一直在使用当前版本,但想要更新LTS版本。我不确定是否使用值为node的标志会从LTS还是当前版本中提取软件包,所以我做了这个操作 nvm install "lts/*" --reinstall-packages-from=14.16.1 当然,我也可以切换到旧的LTS版本,但我想分享一下,以便其他人有所帮助。 - Natetronn
使用 Fish Shell -> nvm install "lts/*" --reinstall-packages-from=(nvm current) - MADforFUNandHappy
显示剩余2条评论

56

两种 简单解决方案:

要安装最新版本的Node并重新安装旧版本包,只需运行以下命令即可。

nvm install node --reinstall-packages-from=node

要安装最新的lts(长期支持)版本的Node,并重新安装旧版本包,请运行以下命令。

nvm install --lts /* --reinstall-packages-from=node

这里有一个GIF动画来支持这个答案:

nvm


1
无法使其工作 - 我只收到 如果提供了 --reinstall-packages-from,则必须指向已安装的 node 版本。 - wickywills
@wickywills "node: this installs the latest version of node" 可能你之前安装了LTS或特定版本,因此 node 没有指向最新的安装版本。或者你需要更新nvm。 - illnr
这对我有用,但是在新节点被安装和激活后,如何删除旧节点? - Zoltan King
我知道这并不完全回答了你的问题,但是我已经停止使用 nvm,转而使用一个非常快速和低调的脚本叫做 n。我制作了一个10分钟的视频,介绍了我为什么转向 n 以及如何使用它。该视频可在 https://nodecli.com/nodejs-install-n 上观看。 - Ahmad Awais
这不是在重复现有的答案吗?而且gif动画分散了我的阅读注意力,我冒昧地将其放入了一个折叠框中,以便于单击后查看,从而更容易阅读此页面的内容。希望这有所帮助。 - hakre

10
这是关于在 Ubuntu 操作系统上使用 nvm 的步骤,以下是我成功的方法:

前往 Node.js 网站获取最新的 LTS 版本(例如版本为:x.y.z)

nvm install x.y.z
# In my case current version is: 14.15.4 (and had 14.15.3)

接下来,执行nvm list命令,您将得到由nvm安装的节点版本列表。

现在,您需要切换到默认的最后一个安装的版本,执行以下命令:

nvm alias default x.y.z

重新列出或运行nvm --version检查: enter image description here

更新: 有时即使我按照上述步骤操作,也不能正常工作,所以我做的是删除/usr/local/bin中的符号链接。

cd /usr/local/bin
sudo rm node npm npx

重新链接:

sudo ln -s $(which node) /usr/local/bin/nodesudo && ln -s $(which npm) /usr/local/bin/npmsudo && ln -s $(which npx) /usr/local/bin/npx

9

如果您当前的版本是4.2,想要安装5.0.0,则执行以下步骤:

nvm install v5.0.0 --reinstall-packages-from=4.2

除了漏掉了末尾的“=”符号,gabrielperales的答案是正确的。如果不加上“=”符号,则会安装新的节点版本,但软件包将不会被安装。

来源:sitepoint


6

使用Node.JS安装新版本。

步骤1:安装NVM

npm i -g nvm

步骤2:安装最新的NODE版本

nvm install *.*.*(NodeVersion)

步骤3:选择Node版本

nvm use *.*.*(NodeVersion)

完成


目前,使用npm安装nvm时,您会收到以下响应:“npm WARN deprecated nvm@0.0.4:这不是正确的nvm。请访问http://nvm.sh并使用curl命令进行安装。” - Mad Bernard

6
以下是升级NodeJs版本的步骤:
  1. 运行 nvm install node(将安装最新版本)。或者,您可以通过运行 nvm install <node_version> 来指定特定版本。
  2. 运行 nvm use <node_version> 来使用它。
  3. 如果您想将其设置为计算机上的默认版本,请运行 nvm alias default <node_version>

附加说明:
要查找计算机上有哪些Node版本以及哪个版本是默认版本,请使用 nvm list 命令。

3

对于 Windows 11,以下是我使用管理员权限在命令提示符上运行的方法:

前提条件:如果您刚刚安装了NVM,请在nvm安装后打开一个新的cmd窗口。

请参阅此处的安装说明:https://github.com/coreybutler/nvm-windows

  1. 使用以下命令获取已安装版本:
nvm list
  1. 获取当前版本
nvm current

安装最新版本
nvm install latest

检查已安装的版本以查看是否有更新版本,再次使用相同的命令。
nvm list
  1. 将当前版本设置为最新版本(使用管理员权限的cmd命令),该版本是在前一步中安装的
nvm use PUT_VERSION_NUMBER_TO_BE_USED

您可以使用以下方法再次检查更改是否成功:
nvm list
  1. 如果不再需要旧版本,请将其删除。
nvm remove PUT_VERSION_NUMBER_TO_BE_REMOVED

如果您想使用LTS版本,请使用以下方式安装:
nvm install lts

应该使用 nvm uninstall VERSION 而不是 nvm remove VERSION - Imanol

1

更新当前活动版本的Bash别名:

alias nodeupdate='nvm install $(nvm current | sed -rn "s/v([[:digit:]]+).*/\1/p") --reinstall-packages-from=$(nvm current)'

sed -rn "s/v([[:digit:]]+).*/\1/p" 这部分将 nvm current 命令的输出转换为只返回 Node 的主要版本号,例如:v13.5.0 -> 13


1
我的升级 Node.js 版本从 v16.20.0 到 v18.16.0 的步骤如下:
- 运行 nvm list
==> nvm list
->     v16.20.0
       v18.16.0
default -> 16.20.0 (-> v16.20.0)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v18.16.0) (default)
stable -> 18.16 (-> v18.16.0) (default)
lts/* -> lts/hydrogen (-> v18.16.0)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.0
lts/hydrogen -> v18.16.0

运行 nvm current
==> nvm current
v16.20.0

运行 nvm install 18.16.0
==> nvm install 18.16.0
v18.16.0 is already installed.
Now using node v18.16.0 (npm v9.5.1)

运行 nvm current
==> nvm current
v18.16.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接