Zilmac 博客
← 返回技术实践

NVM 怎么管理多个 Node.js 版本?Node 18、20、22、24 开发环境切换方法与常见问题

CI/CD ·约 11 分钟阅读

NVM 怎么管理多个 Node.js 版本?截至 2026 年 10 月 15 日,Node.js 官方发布表将 Node 18、20 列为已结束支持,将 Node 22、24 列为 LTS。若项目需要复现旧环境,可用 NVM 分别安装这些版本,再用切换命令为当前终端选定版本;新终端默认版本和项目版本文件则分别解决启动默认值与项目绑定问题。切换后还应核对版本号和命令路径。(Node.js 官方版本状态表)

同时维护不同 Node.js 版本项目的开发者,可按本文流程安装、切换并设置默认版本。
需要验证 Node 18、20、22、24 兼容性的工程师,可参考项目版本文件和终端核验步骤。
若终端仍调用旧版本或无法识别 NVM,可直接查看后面的排查顺序。

NVM 怎么管理多个 Node.js 版本:先区分实现

>

“nvm”常被用作多个实现的统称,但命令和项目文件支持并不完全相同。macOS、Linux 和 WSL 常用 POSIX 版 NVM;Windows 原生环境常用独立的 Windows 实现。POSIX 版通常作为 Shell 函数加载,按终端会话调整 PATH;Windows 实现则通过切换符号链接管理 Node.js 可执行文件。把一种实现的命令原样抄到另一种环境,容易导致版本文件不起作用或命令行为不一致。

下表的星级只评估与“多项目按需切换”这一操作流程的匹配程度,不代表工具整体优劣。

方案 适用环境与项目版本文件 切换方式 流程匹配评分
POSIX 版 NVM macOS、Linux、WSL;支持 .nvmrc,自动切换需配置 Shell 钩子 nvm use <版本> ★★★★★
Windows 独立实现 Windows 原生终端;不原生支持 .nvmrc nvm use <完整版本号> ★★☆☆☆

远程 Mac 开发环境属于 macOS Shell 场景时,可参考 POSIX 版命令;但实际结果仍取决于 NVM 是否安装、当前使用的 Shell,以及 PATH 中是否有其他 Node.js 安装。两种实现的命令和系统差异,可分别核对 POSIX 版 NVM 官方文档与 Windows 实现的使用说明。

版本是否能安装,与是否仍受官方维护是两件事。核验日 Node 18 于 2025 年 3 月 27 日结束支持,Node 20 于 2026 年 3 月 24 日结束支持;Node 22 与 Node 24 当时仍列为 LTS。旧版本仍可用于兼容性复现,但不应仅凭“可以安装”就判断适合新生产部署;上线前应复核官方版本状态表。

安装与查看 Node 18、20、22、24

>

在 macOS、Linux 或 WSL 的 POSIX Shell 中,先确认 NVM 已在当前 Shell 初始化,再按项目需要安装主版本。下面的主版本号写法适用于 POSIX 版 NVM;命令会选取对应主版本分支的可用版本,不代表所有项目都应使用分支中的最新小版本。具体版本要求应以项目配置为准。

nvm install 18
nvm install 20
nvm install 22
nvm install 24

nvm ls
nvm current
node -v
npm -v

nvm ls 查看已安装版本,nvm current 查看当前 Shell 正在使用的版本。需要查询可安装版本时,POSIX 版使用 nvm ls-remote;安装、列出本地版本和查询远程版本的用法,可查阅 NVM 命令参考。

Windows 原生环境不要直接照搬以上主版本号命令。先用该实现的 nvm list available 查看可选版本,再以查询到的完整版本号执行 nvm install <完整版本号>;之后用 nvm list 列出本地版本。Windows 实现的命令以其官方使用说明为准。若 Node 18 或 20 只用于旧项目验证,应记录项目实际锁定的小版本,而不是只记主版本。

当前终端切换与默认版本设置

>

当前终端临时切换与设置默认版本解决的是不同问题。POSIX 版执行 nvm use 22 后,只改变当前 Shell 使用的版本;执行 nvm alias default 22 则指定新开的 Shell 默认使用的版本。新终端是否读取该默认值,还取决于 NVM 初始化代码是否被相应 Shell 配置文件加载。

完成切换后,在同一个终端执行以下检查:

node -v
npm -v
command -v node
nvm current

版本号应与目标版本对应,command -v node 应指向 NVM 管理的 Node.js 路径。也可运行 nvm which current 查看当前版本的可执行文件位置。Node.js 的 process.execPath 会返回启动当前进程的可执行文件绝对路径,因此可以用它交叉验证项目实际启动的 Node.js:

node -p "process.execPath"

然后关闭并新开一个终端,再运行 node -v 和 command -v node。如果新终端显示的版本与默认设置不同,先检查该终端实际启动的 Shell 和对应初始化文件;不要只在原终端反复执行切换命令。

项目版本文件与自动切换边界

>

在 POSIX 版 NVM 管理的项目中,可以在项目根目录创建 .nvmrc,内容写项目需要的主版本或精确版本。例如,项目需要 Node 22:

printf '22\n' > .nvmrc
nvm install
nvm use
node -v

.nvmrc 让项目目录声明所需版本,但它不等于所有终端都会自动切换。POSIX 版支持 nvm use 从当前目录读取版本文件;进入目录时自动执行切换,则需要额外的 Shell 钩子或配置。配置之后仍应手动核验版本,尤其是在集成开发终端、远程登录 Shell 与非交互式脚本之间切换时。具体读取规则和自动切换配置,可查阅 NVM 的 .nvmrc 与 Shell 集成说明。

Windows 独立实现不原生支持 .nvmrc,不能把 POSIX 版的 nvm use 空参数用法视作通用方案。其维护文档还记录了一个常见实际边界:旧 Node.js 安装路径若排在 NVM 符号链接之前,终端会先找到旧版 node.exe。这类问题应先核验 PATH 顺序,再考虑卸载或调整旧安装,而不是反复重装项目依赖。

切换异常的排查顺序

>

当 Node 版本看起来没有变化,按以下顺序检查,避免先清理缓存或重装工具却没有找到根因:

  1. 确认实现与终端。 macOS、Linux、WSL 的 POSIX 版命令,不等于 Windows 原生实现的命令。Windows 原生实现优先在其支持的终端中验证。
  2. 确认 Shell 已加载 NVM。 在 macOS 和 Linux 上,nvm: command not found 常见原因是当前 Shell 没有读取正确的初始化文件。POSIX 版通过 Shell 配置加载;登录 Shell 和交互式 Shell 读取的配置文件可能不同。核对当前终端正在使用的 Shell,再检查对应配置。
  3. 检查命令解析路径。 macOS、Linux 可运行 command -v node;Windows 可运行 where.exe node。若第一条结果不是版本管理器所管理的位置,检查 PATH 中的旧安装路径或其他 Node.js 安装。
  4. 确认切换发生在当前会话。 在执行 nvm use 的同一个终端立即运行 node -v;编辑器、任务脚本或另一个终端可能启动了独立环境。
  5. 检查全局工具是否装在目标版本下。 npm 全局包安装位置与 npm 的 prefix 有关;切换 Node.js 后,原来版本下安装的全局命令不一定会出现在新版本的路径中。检查 npm prefix -g,再确认所需命令是否已在目标版本安装。(npm 关于全局安装目录的说明)
  6. 最后核验实际可执行文件。 除了 node -v,再运行 node -p "process.execPath";版本号正确但文件路径不对时,仍可能是 PATH 或集成开发工具启动配置不一致。

远程 Mac 环境的复现检查

>

远程 Mac 上排查时,应在实际运行构建、测试或服务的终端里完成验证,而不只在另一个 SSH 会话或本地终端检查。可按这组可复现步骤操作:

  • 进入项目目录,查看 .nvmrc 内容;没有版本文件时,以项目文档或锁定配置为准。
  • 运行 nvm current 与 node -v,确认当前 Shell 选择的版本。
  • 运行 command -v node 和 node -p "process.execPath",确认命令路径指向同一套版本管理环境。
  • 运行项目自身的测试或构建脚本,确认实际使用的 Node.js 与依赖约束相符。
  • 新开远程终端再重复检查,区分“当前会话切换成功”和“默认版本配置成功”。

远程 Mac 的 Shell 初始化、PATH 和终端类型可能与本地配置不同,因此本地通过不代表远程会话也通过。若需要了解 Zilmac 页面所描述的远程 Mac 接入方式,应以页面实际列出的环境信息为准;本文没有本站实测数据,因此不对特定节点配置或运行结果作推断。

常见问题

>

怎样在 Node 18、20、22、24 之间切换?

macOS、Linux 或 WSL 的 POSIX 版 NVM,可分别执行 nvm use 18、nvm use 20、nvm use 22 或 nvm use 24。如果目标版本尚未安装,先执行 nvm install <主版本号>。Windows 原生实现命令不同,应按其版本列表使用完整版本号。切换后用 node -v 和命令路径共同确认结果。

如何查看已安装版本并设置新终端默认值?

POSIX 版用 nvm ls 查看已安装版本,用 nvm alias default 22 指定新终端默认使用 Node 22。执行 nvm ls-remote 可检查可安装版本。设置完成后,要新开终端再检查 node -v;当前终端显示正确,只能说明当前会话切换成功,不能证明启动配置已生效。

切换后仍显示旧版本,先检查什么?

先确认切换命令与版本输出来自同一个终端,再运行 command -v node;Windows 则用 where.exe node。路径若指向旧安装,检查 Shell 初始化和 PATH 顺序。远程终端或编辑器内置终端也可能采用不同启动配置;POSIX 版可再用 node -p "process.execPath" 验证实际执行文件。

.nvmrc 能让每个项目自动切换版本吗?

POSIX 版 NVM 能读取 .nvmrc,进入项目后可运行 nvm use;自动随目录切换仍需额外配置 Shell 钩子。Windows 原生实现不原生支持 .nvmrc,应显式执行其版本切换命令。团队共享项目时,先确认成员使用的操作系统和 NVM 实现,再约定统一的版本声明与核验步骤。

若工作流是在本地长期运行、持续使用同一套 Node.js 工具链,本机安装通常更直接;若要临时复现远程 Mac 上的项目环境,本地环境的 Shell 配置不一致、已有 Node.js 路径抢先匹配、测试结果难以代表远程环境,都会增加排查成本。先确认项目所需版本、当前终端和 Node.js 命令路径;确实需要临时远程 Mac 开发或验证时,再查看 Zilmac 当前提供的环境信息,按实际页面内容判断是否适合。最后更新于 2026 年 10 月 15 日;版本状态核实自 Node.js 官方版本状态表。

在云端 Mac 上,灵活管理你的 Node.js 开发环境

租用 Zilmac 裸金属 M4 云 Mac,运行完整 macOS,按项目安装并切换所需的 Node.js 版本。

通过 SSH 远程开发,把依赖安装、构建任务与日常工作放到独享设备上运行。 — 立即了解套餐方案

限时优惠

Zilmac

租用 Zilmac 裸金属 M4 云 Mac,运行完整 macOS,按项目安装并切换所需的 Node.js 版本。

返回首页
限时优惠 点击查看套餐