如何使用NVM设置默认的Node版本?

1539

我已经使用nvm在ubuntu上安装了两个node版本:v6.11.5v9.0.0,而nvm默认使用的是v9.0.0版本。

每次我需要更改node版本时

$ nvm list
         v6.11.5
->       v9.0.0
         system
default -> node (-> v9.0.0)
node -> stable (-> v9.0.0) (default)
stable -> 9.0 (-> v9.0.0) (default)


$ nvm v6

如何将 nvm 版本默认更改为 v6.11.5

28个回答

18

使用 NVM 的简要步骤

适用于 Mac

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.39.1/install.sh | bash
nvm install 16
nvm use 16
nvm alias default 16
npm install npm --global # Upgrade npm to the latest version

对于Linux操作系统

sudo apt install curl git
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install nodejs

适用于Windows操作系统

Git's installer for Windows from below link

https://git-scm.com/download/win

node-v16.XX.XX-x64.msi from below link

https://nodejs.org/dist/latest-v16.x/

17
如果你只想要一个主要版本作为默认版本,这个方法可以实现:
% nvm alias default 18

检查您当前的默认设置:
% nvm alias default
default -> 18 (-> v18.12.1)

重新启动终端以应用更改。

16

在运行了 nvm install --lts 命令之后,我做了类似的事情:

nvm alias default 'lts/*'

好的回答!nvm install --lts && nvm alias default lts/* - Jono

14

我尝试了得票最高的答案,但对我不起作用。 问题在于我安装了另一个由brew安装的节点,而NVM将其识别为系统节点。 NVM优先于默认别名选择系统节点。我需要做的就是卸载系统节点(brew uninstall node)。


2
在WSL上我也是这样的。我没有安装brew,所以我使用了´sudo apt-get purge --auto-remove nodejs´。 - LDW
@LDW 的评论对我在 WSL 上也起了作用。 - Denis S Dujota

10

nvm alias default v14.17.5

   mazin ~  nvm ls
           v10.15.1
    ->     v12.19.0
           v14.17.5
           v16.14.0
    default -> 12 (-> v12.19.0)
    node -> stable (-> v16.14.0) (default)
    stable -> 16.14 (-> v16.14.0) (default)
    iojs -> N/A (default)
    unstable -> N/A (default)
    lts/* -> lts/gallium (-> v16.14.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.10 (-> N/A)
    lts/fermium -> v14.19.0 (-> N/A)
    lts/gallium -> v16.14.0

     mazin ~  nvm use 14
    Now using node v14.17.5 (npm v8.7.0)

     mazin@zhihongtongxue  ~  nvm ls
           v10.15.1
           v12.19.0
    ->     v14.17.5
           v16.14.0
    default -> 12 (-> v12.19.0)
    node -> stable (-> v16.14.0) (default)
    stable -> 16.14 (-> v16.14.0) (default)
    iojs -> N/A (default)
    unstable -> N/A (default)
    lts/* -> lts/gallium (-> v16.14.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.10 (-> N/A)
    lts/fermium -> v14.19.0 (-> N/A)
    lts/gallium -> v16.14.0

     mazin ~  nvm alias default 14
    default -> 14 (-> v14.17.5)

     mazin ~  nvm ls
           v10.15.1
           v12.19.0
    ->     v14.17.5
           v16.14.0
    default -> 14 (-> v14.17.5)
    node -> stable (-> v16.14.0) (default)
    stable -> 16.14 (-> v16.14.0) (default)
    iojs -> N/A (default)
    unstable -> N/A (default)
    lts/* -> lts/gallium (-> v16.14.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.10 (-> N/A)
    lts/fermium -> v14.19.0 (-> N/A)
    lts/gallium -> v16.14.0

10

首先检查可用版本

nvm list

然后使用以下命令设置默认版本:

nvm alias default lts/**

enter image description here


7

5

当前的答案对我来说没有解决问题,因为我在 /usr/bin/node 和 /usr/local/bin/node 安装了 Node,所以系统总是先解析它们,并忽略 nvm 版本。

我通过将现有版本移动到 /usr/bin/node-system 和 /usr/local/bin/node-system 解决了这个问题。

然后我再也无法使用 node 命令,除非我使用 nvm use :(

我通过创建符号链接到由 nvm 安装的版本来解决这个问题。

sudo mv /usr/local/bin/node /usr/local/bin/node-system    
sudo mv /usr/bin/node /usr/bin/node-system 
nvm use node
  Now using node v12.20.1 (npm v6.14.10)
which node
  /home/paul/.nvm/versions/node/v12.20.1/bin/node
sudo ln -s /home/paul/.nvm/versions/node/v12.20.1/bin/node /usr/bin/node

接着打开一个新的终端窗口

node -v
  v12.20.1

5

将默认版本更改为最新的LTS版本

nvm alias default lts/*

您可以通过执行nvm install lts/* --reinstall-packages-from=lts/*手动升级全局版本,或者每周使用cron job来保持版本最新。

--reinstall-packages-from=lts/*用于在更改版本时重新安装全局包。


5

由于上面有很多关于默认别名的答案,但仍然无法在新终端中获得正确版本,因此我的回答在这里。

当你在你的shell rc文件(如~/.bashrc)中添加source $NVM_DIR/nvm.sh时,它首先会检查$PATH环境变量中是否存在nvm-version节点路径,例如/usr/local/nvm/versions/node/v14.1.0/bin。如果有一个,nvm将不使用默认别名。

因此,首先应该检查为什么在$PATH中有node路径。如果你能找到原因(比如在另一个rc文件或脚本文件中明确运行了nvm use 16),则可以将其删除。

如果你找不到原因或者想保留它,那么另一个解决方案是:

# that's your previous usage, keep it
source $NVM_DIR/nvm.sh

# FORCE to use default alias
nvm use default

# or if you prefer to forcedly use .nvmrc prior to default, then
test -f .nvmrc && nvm use || nvm use default

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