nvm 在linux 环境下设置

94 阅读3分钟

这个问题在使用 nvm(Node Version Manager)时很常见,你遇到的情况是:

  • 执行 nvm use v22.12.0 后,当前会话的 Node 版本确实切换到了 22.12.0。
  • 但是,当你关闭终端并重新连接时,Node 版本又自动变回了之前的版本(例如系统自带的版本或 nvm 默认的版本)。

根本原因在于:nvm use 命令只在当前的终端会话(Shell session)中有效。当你关闭终端时,这个会话就结束了,nvm 对当前会话所做的环境变量修改也随之失效。

当你重新连接服务器时,会启动一个全新的终端会话,nvm 会根据其配置文件来决定使用哪个 Node 版本。

解决方案

你需要将 v22.12.0 设置为默认版本,这样每次新会话启动时,nvm 都会自动加载这个版本。

请按照以下步骤操作:

步骤 1: 查看已安装的 Node 版本

首先,确认 v22.12.0 已经正确安装在你的 nvm 中。

nvm ls

你应该会看到类似下面的输出,其中 v22.12.0 会被列出。

->     v16.14.2
       v18.17.1
*      v22.12.0
         system
default -> 16.14.2 (-> v16.14.2)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v22.12.0) (default)
stable -> 22.12 (-> v22.12.0) (default)
lts/* -> lts/iron (-> v20.17.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.2 (-> N/A)
lts/hydrogen -> v18.18.2 (-> N/A)
lts/iron -> v20.17.0 (-> N/A)

在这个例子中:

  • -> v16.14.2 表示这是当前会话正在使用的版本。
    • v22.12.0 表示这是默认版本(如果配置了的话)。
  • default -> 16.14.2 明确指出了 nvm 的默认版本设置。

步骤 2: 设置默认 Node 版本

使用 nvm alias default 命令来设置默认版本。

nvm alias default v22.12.0

执行成功后,你会看到这样的输出:

default -> v22.12.0

步骤 3: 验证设置

为了确保设置生效,你需要关闭当前的 SSH 连接,然后重新连接到服务器。

重新连接后,直接检查 Node 版本:

node -v

如果一切顺利,输出应该是:

v22.12.0

现在,无论你多少次重新连接服务器,Node 的版本都会是你设置的 v22.12.0。


补充知识:nvm 的工作原理

nvm 的核心是通过修改当前 Shell 的环境变量 PATH 来工作的。

  1. 当你运行 nvm use 时,nvm 会:
    • 在它的安装目录(通常是 ~/.nvm/versions/node/)下找到对应版本的 Node 程序。
    • 将这个版本的 bin 目录(例如 ~/.nvm/versions/node/v22.12.0/bin)添加到 PATH 环境变量的最前面
    • 这样,当你输入 node 或 npm 时,系统会优先找到 nvm 管理的这个版本。
  1. 当你关闭终端时,当前 Shell 进程结束,所有临时的环境变量修改(包括 PATH)都会丢失。
  1. 当你重新登录时,Shell 会读取它的配置文件(如 ~/.bashrc, ~/.zshrc 等)。
    • 在你安装 nvm 时,它已经自动在你的 shell 配置文件中添加了一段脚本。
    • 这段脚本会在每次 Shell 启动时运行,它会检查 nvm 的默认版本设置,并据此来初始化 PATH 变量,从而自动为你切换到默认版本。

如果 nvm alias default 无效怎么办?

虽然 nvm alias default 是标准做法,但在某些复杂的 shell 配置环境下可能会有问题。如果上述方法不生效,可以尝试以下几种更强制的方案:

方案 A:手动在 Shell 配置文件中指定

直接编辑你的 shell 配置文件,在文件末尾添加 nvm use 命令。

  1. 确定你使用的 Shell(通常是 bash 或 zsh)。
  1. 编辑对应的配置文件:
    • bash: vim ~/.bashrc
    • zsh: vim ~/.zshrc
  1. 在文件的最后一行,添加以下内容:
nvm use v22.12.0
  1. 保存并退出文件。
  1. 让配置生效,或者重新登录:
# 如果是 bash
source ~/.bashrc
# 如果是 zsh
source ~/.zshrc