Node.js 多版本管理完全教程:nvm 全平台安装、版本切换与新手避坑实战


🌸你好呀!我是断弦承露
🌟感谢陪伴~ 小白博主在线求友
🌿 跟着小白学/Java/软件设计/鸿蒙开发/芯片开发
📖专栏汇总:
《软件设计师》专栏 | 《Java》专栏 | 《 RISC-V 处理器实战》专栏 | 《Flutter鸿蒙实战》专栏 | 《React Native开发》专栏 ------|CSDN|------

文章目录

  • [Node.js 多版本管理完全教程:nvm 全平台安装、版本切换与新手避坑实战!在这里插入图片描述(https://i-blog.csdnimg.cn/direct/2b526ced91bb4704af3a94afa72582a5.png)](#Node.js 多版本管理完全教程:nvm 全平台安装、版本切换与新手避坑实战)
    • [📝 本文能帮你解决什么](#📝 本文能帮你解决什么)
    • [🧠 全文知识架构图](#🧠 全文知识架构图)
    • [一、🔍 核心原理与认知避坑](#一、🔍 核心原理与认知避坑)
      • [1.1 版本管理实现逻辑](#1.1 版本管理实现逻辑)
        • [Windows平台 nvm-windows:目录符号链接方案](#Windows平台 nvm-windows:目录符号链接方案)
        • [macOS / Linux 平台 nvm-sh:会话级环境隔离方案](#macOS / Linux 平台 nvm-sh:会话级环境隔离方案)
      • PATH终端查找规则(关键区分,消除新手误区)
      • [1.2 三大高频认知误区](#1.2 三大高频认知误区)
    • [二、🪟 Windows平台:nvm-windows完整部署](#二、🪟 Windows平台:nvm-windows完整部署)
      • [2.1 🧹 前置清理SOP(解决99%切换失效,严格按顺序执行)](#2.1 🧹 前置清理SOP(解决99%切换失效,严格按顺序执行))
      • 或者使用官方卸载程序
      • [2.2 📦 nvm-windows安装流程](#2.2 📦 nvm-windows安装流程)
      • [2.3 ⚡ 国内镜像settings.txt标准配置](#2.3 ⚡ 国内镜像settings.txt标准配置)
      • [2.4 📋 nvm-windows 核心命令速查表](#2.4 📋 nvm-windows 核心命令速查表)
      • [2.5 ✅ 实操演示(双LTS版本安装切换)](#2.5 ✅ 实操演示(双LTS版本安装切换))
      • [2.6 📴 内网离线部署方案](#2.6 📴 内网离线部署方案)
    • [三、🍎 macOS / Linux平台:nvm-sh部署指南](#三、🍎 macOS / Linux平台:nvm-sh部署指南)
      • [3.1 一键安装脚本](#3.1 一键安装脚本)
      • [3.2 Shell持久化配置(zsh/bash)](#3.2 Shell持久化配置(zsh/bash))
        • [zsh 配置脚本](#zsh 配置脚本)
        • [bash 配置脚本](#bash 配置脚本)
      • [3.3 国内镜像临时/永久配置](#3.3 国内镜像临时/永久配置)
      • [3.4 nvm-sh 常用命令清单](#3.4 nvm-sh 常用命令清单)
      • [3.5 全局包一键迁移](#3.5 全局包一键迁移)
    • [四、📁 项目级版本锁定与团队协作](#四、📁 项目级版本锁定与团队协作)
      • [4.1 .nvmrc 跨平台编写规范](#4.1 .nvmrc 跨平台编写规范)
      • [4.2 Windows PowerShell自动切换脚本](#4.2 Windows PowerShell自动切换脚本)
      • [4.3 团队协作最佳实践](#4.3 团队协作最佳实践)
    • [五、🚨 新手高频报错全解](#五、🚨 新手高频报错全解)
      • [报错1:nvm use exit status 5 Access is denied](#报错1:nvm use exit status 5 Access is denied)
      • [报错2:nvm use提示成功,node -v版本不变](#报错2:nvm use提示成功,node -v版本不变)
      • [报错3:切换提示文件被占用 / 操作无法完成](#报错3:切换提示文件被占用 / 操作无法完成)
      • [报错4:Windows执行nvm --version提示无效命令](#报错4:Windows执行nvm --version提示无效命令)
      • [报错5:nvm install下载超时失败](#报错5:nvm install下载超时失败)
      • 报错6:IDE内置终端版本和CMD不一致
      • [报错7:切换大版本npm install EINTEGRITY](#报错7:切换大版本npm install EINTEGRITY)
      • 报错8:nvm-windows切换版本后全局命令依然存在、出现兼容崩溃
    • [六、❓ FAQ](#六、❓ FAQ)
    • [七、🏢 企业运维进阶方案](#七、🏢 企业运维进阶方案)
      • [7.1 Windows域环境批量静默部署](#7.1 Windows域环境批量静默部署)
      • [7.2 故障排查标准化SOP](#7.2 故障排查标准化SOP)
      • [7.3 安全建议](#7.3 安全建议)
    • [📚 参考官方信源](#📚 参考官方信源)
    • [📌 环境配置流程图](#📌 环境配置流程图)

Node.js 多版本管理完全教程:nvm 全平台安装、版本切换与新手避坑实战

📝 本文能帮你解决什么

  • 单设备并行运行多个 Node.js 完整语义化版本,老旧项目与新项目运行环境隔离互不干扰
  • 根治 nvm use 权限报错、切换成功但版本不变、下载超时、命令找不到等90%新手典型故障
  • 团队统一锁定 Node.js 运行版本,消除「本地正常、线上/他人环境异常」的环境兼容纠纷
  • 企业内网离线部署、多开发账号标准化运维完整落地方案
  • CI/CD流水线与本地开发环境对齐,保证构建产物可复现

🧠 全文知识架构图

#mermaid-svg-KmzVmXRSglgNRPPC{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KmzVmXRSglgNRPPC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KmzVmXRSglgNRPPC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KmzVmXRSglgNRPPC .error-icon{fill:#552222;}#mermaid-svg-KmzVmXRSglgNRPPC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KmzVmXRSglgNRPPC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KmzVmXRSglgNRPPC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KmzVmXRSglgNRPPC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KmzVmXRSglgNRPPC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KmzVmXRSglgNRPPC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KmzVmXRSglgNRPPC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KmzVmXRSglgNRPPC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KmzVmXRSglgNRPPC .marker.cross{stroke:#333333;}#mermaid-svg-KmzVmXRSglgNRPPC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KmzVmXRSglgNRPPC p{margin:0;}#mermaid-svg-KmzVmXRSglgNRPPC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KmzVmXRSglgNRPPC .cluster-label text{fill:#333;}#mermaid-svg-KmzVmXRSglgNRPPC .cluster-label span{color:#333;}#mermaid-svg-KmzVmXRSglgNRPPC .cluster-label span p{background-color:transparent;}#mermaid-svg-KmzVmXRSglgNRPPC .label text,#mermaid-svg-KmzVmXRSglgNRPPC span{fill:#333;color:#333;}#mermaid-svg-KmzVmXRSglgNRPPC .node rect,#mermaid-svg-KmzVmXRSglgNRPPC .node circle,#mermaid-svg-KmzVmXRSglgNRPPC .node ellipse,#mermaid-svg-KmzVmXRSglgNRPPC .node polygon,#mermaid-svg-KmzVmXRSglgNRPPC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KmzVmXRSglgNRPPC .rough-node .label text,#mermaid-svg-KmzVmXRSglgNRPPC .node .label text,#mermaid-svg-KmzVmXRSglgNRPPC .image-shape .label,#mermaid-svg-KmzVmXRSglgNRPPC .icon-shape .label{text-anchor:middle;}#mermaid-svg-KmzVmXRSglgNRPPC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KmzVmXRSglgNRPPC .rough-node .label,#mermaid-svg-KmzVmXRSglgNRPPC .node .label,#mermaid-svg-KmzVmXRSglgNRPPC .image-shape .label,#mermaid-svg-KmzVmXRSglgNRPPC .icon-shape .label{text-align:center;}#mermaid-svg-KmzVmXRSglgNRPPC .node.clickable{cursor:pointer;}#mermaid-svg-KmzVmXRSglgNRPPC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KmzVmXRSglgNRPPC .arrowheadPath{fill:#333333;}#mermaid-svg-KmzVmXRSglgNRPPC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KmzVmXRSglgNRPPC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KmzVmXRSglgNRPPC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KmzVmXRSglgNRPPC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KmzVmXRSglgNRPPC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KmzVmXRSglgNRPPC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KmzVmXRSglgNRPPC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KmzVmXRSglgNRPPC .cluster text{fill:#333;}#mermaid-svg-KmzVmXRSglgNRPPC .cluster span{color:#333;}#mermaid-svg-KmzVmXRSglgNRPPC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KmzVmXRSglgNRPPC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KmzVmXRSglgNRPPC rect.text{fill:none;stroke-width:0;}#mermaid-svg-KmzVmXRSglgNRPPC .icon-shape,#mermaid-svg-KmzVmXRSglgNRPPC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KmzVmXRSglgNRPPC .icon-shape p,#mermaid-svg-KmzVmXRSglgNRPPC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KmzVmXRSglgNRPPC .icon-shape .label rect,#mermaid-svg-KmzVmXRSglgNRPPC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KmzVmXRSglgNRPPC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KmzVmXRSglgNRPPC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KmzVmXRSglgNRPPC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Node.js多版本管理
核心原理与认知避坑
Windows平台nvm-windows部署
macOS/Linux平台nvm-sh部署
项目级版本锁定与团队协作
新手高频报错全解
常见问题FAQ
企业运维与CI进阶
符号链接工作机制
PATH环境变量终端差异原理
三大认知误区纠正
旧版Node.js彻底清理SOP
工具安装与环境验证
国内镜像加速配置规范
核心命令速查表
双版本安装切换实操
官方脚本一键安装
多终端Shell持久化配置
常用命令清单
全局包版本迁移方案
.nvmrc跨平台编写规范
Windows自动切换脚本
团队协作工程化最佳实践
权限拒绝类报错
切换不生效冲突排查
下载失败网络问题
命令参数混淆故障
依赖原生模块兼容报错
nvm-windows vs nvm-sh完整对比
版本升级与重装注意事项
无管理员权限替代方案
内网离线部署流程
GitHub Actions CI环境对齐
域环境批量部署与权限策略

一、🔍 核心原理与认知避坑

1.1 版本管理实现逻辑

nvm(Node Version Manager,Node版本管理器)是行业主流Node多版本管理工具。

重点区分:Windows nvm-windows 与 macOS/Linux nvm-sh 是两套完全独立开源项目,实现原理、命令集合、行为表现存在显著差异,不可混用文档。

  1. nvm-windows:Go语言编译独立二进制可执行程序,依托Windows NTFS文件系统符号链接实现版本切换
  2. nvm-sh:纯Shell函数集合,需要加载至终端会话,依靠动态修改进程环境变量实现会话级隔离
Windows平台 nvm-windows:目录符号链接方案

目录符号链接(Symbolic Link /D) :NTFS文件系统重解析点,区别于.lnk桌面快捷方式(仅资源管理器识别);所有进程、终端均可透明访问。

两种Windows目录链接重要区分:

  1. Junction(联接点 /J):不支持目标跨盘符,无需特殊权限;
  2. 目录符号链接(/D):支持目标目录跨盘符;创建默认需要SeCreateSymbolicLinkPrivilege权限。
    nvm-windows 统一选用目录符号链接,适配开发者将Node版本库放置D/E盘的场景。

工作流程:

nvm-windows 维护一个固定全局入口路径(默认C:\Program Files\nodejs),所有Node.js版本存放至nvm根目录下独立v<x.y.z>文件夹。执行nvm use时,修改符号链接指向对应的版本目录。

底层硬性约束:

NTFS规则:同名物理文件夹不能被符号链接覆盖;若目标路径本身是旧符号链接,则允许直接替换

因此安装前必须彻底删除C:\Program Files\nodejs实体目录,仅残留符号链接也建议一并清理。

行为边界:

修改系统全局符号链接,切换后对本机所有新启动终端全局永久生效、重启电脑保持配置

⚠️ 重要边界:已经启动并缓存node.exe路径的长期运行程序(IDE后台进程、本地服务),进程生命周期内不会自动刷新版本。

⚠️ 补充:单人日常开发无感知;多开发账号共用一台电脑、多人同时执行nvm use仅会发生"后执行覆盖先执行",属于原子替换,不会损坏链接文件。

⚠️ 关键设计特性:nvm-windows不自动隔离npm全局包 ,默认共用系统%AppData%\npm目录,跨Node.js大版本切换易出现全局命令二进制兼容报错。

macOS / Linux 平台 nvm-sh:会话级环境隔离方案

nvm-sh部署于当前用户家目录~/.nvm,依靠NVM_DIR定位根目录;终端加载脚本注册Shell函数。执行nvm use同步完成3项核心操作:

  1. 调整当前终端进程PATH优先级,优先读取目标Node.js版本bin目录
  2. 设置npm_config_prefix环境变量,重定向npm全局包路径至当前版本独立目录
  3. 更新NVM_BIN配套环境变量保障子进程环境一致(NVM_INC为内部私有变量,不建议业务脚本依赖)

行为边界:

仅修改当前终端会话内部环境变量 ;新开终端环境重置;依靠nvm alias default <version>设置新终端默认版本;天然实现多用户环境隔离,互不干扰。

重要提示:nvm-sh属于Shell函数,并非独立二进制;定时任务、Shell脚本等非交互式终端 不会自动加载,调用前必须手动执行source ~/.nvm/nvm.sh

PATH终端查找规则(关键区分,消除新手误区)

PATH是操作系统可执行文件检索目录列表,两套终端行为存在差异:

  • CMD:检索顺序 当前工作目录 → 系统PATH → 用户PATH
  • PowerShell:PATH检索顺序 系统PATH → 用户PATH; 独立安全策略:PowerShell默认不允许直接运行当前目录下可执行文件,必须使用.\node.exe,该规则与PATH优先级相互独立。

Windows通用优先级:系统环境变量PATH > 用户环境变量PATH;旧Node.js残留写入系统PATH,是切换不生效头号诱因。

1.2 三大高频认知误区

❌ 误区1:Windows与macOS使用的是同一个nvm程序

两套项目代码完全独立,官方原文提示:This is not the same thing as nvm!

关键差异示例:nvm alias default仅nvm-sh支持;nvm-windows无别名系统,但支持lts/latest关键字用于install/use

❌ 误区2:切换Node.js版本需要手动修改系统环境变量

标准场景完全不需要,工具自动处理;仅旧版本残留冲突时需要人工清理PATH。

❌ 误区3:本机已有Node.js,可以直接安装nvm无需卸载

Windows平台强烈禁止,物理目录冲突直接导致符号链接创建失败;macOS/Linux冲突概率更低,但依旧建议卸载Homebrew/apt全局Node.js,规避PATH优先级冲突。

新增重要提醒:不要同时混用 Windows nvm-windows + WSL内部nvm-sh,两套环境PATH互通极易造成版本混乱。

二、🪟 Windows平台:nvm-windows完整部署

2.1 🧹 前置清理SOP(解决99%切换失效,严格按顺序执行)

前置提醒:本机若安装fnm、Volta、nvs等其他Node.js版本管理器,必须完整卸载,清理环境变量,防止PATH冲突。
fnm、Volta、nvs、nvm-windows 不能共存;

多个工具同时存在时,PATH里会同时存在好几套 node 入口路径,系统会随机优先调用其中某一个工具的 node;

哪怕你用 nvm 切换了版本,系统读取到的永远是另一套工具绑定的 Node 版本,最终现象:

nvm use提示切换成功,但 node -v 版本纹丝不动。

这些工具互相抢占 PATH 优先级、抢占node/npm命令挂载,没有兼容方案,所以必须全部卸载

  1. 卸载官方Node.js安装包

    Win+R输入appwiz.cpl,卸载全部名称包含Node.js的程序。

  2. 【必做】关闭Windows应用执行别名(最高优先级冲突源)

    Win+I打开设置 → 搜索「应用执行别名」

    找到Node.js两条开关,全部设置为关闭

故障特征:执行where node出现C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\node.exe,代表别名未关闭,无论如何切换nvm都不会生效。

  1. 删除残留物理目录与旧符号链接
  • C:\Program Files\nodejs强制删除,重中之重(实体目录+旧符号链接一并清除)
  • %AppData%\npm:旧npm全局包目录
  • %AppData%\npm-cache:npm缓存目录

使用方式:资源管理器地址栏直接粘贴%AppData%回车直达目录。

  1. 清理环境变量
    此电脑 → 属性 → 高级系统设置 → 环境变量

或者win键直接搜索

系统变量Path、用户变量Path 中,删除所有包含nodejsnpm的条目。

-删掉 %AppData%\npm、npm-cache:属于可选操作(清理旧全局包 / 缓存),不删也能装 nvm;

-卸载 Node 本体、卸载 fnm/volta/nvs、关闭应用别名、删C:\Program Files\nodejs、清理 PATH 环境变量:必须做,是为了消除路径优先级冲突,保证 nvm 切换版本生效;

  1. 验证清理结果
    完全关闭所有旧终端,新开CMD/PowerShell执行:
batch 复制代码
node -v
npm -v

预期:提示「不是内部或外部命令」,代表清理完成。

重装兜底流程:卸载nvm → 删除nvm根目录 → 再次执行本节全部清理步骤 → 重启电脑再重装。

或者使用官方卸载程序

点击 Uninstall Node.js 运行官方卸载程序;

win键搜索Node.js

重启电脑一次;

按照教程步骤:

① 关闭 Node.js 应用执行别名

② 手动删除 C:\Program Files\nodejs 文件夹(防止残留)

③ 删除 %AppData%\npm、%AppData%\npm-cache(可选,想环境干净就删)

④ 打开环境变量,核对系统 / 用户 Path,删掉所有剩余 node、npm 相关路径

新开 CMD 输入 node -v,提示命令不存在 = 清理完毕,可以安装 nvm。

辅助命令清单(cmd)

找到正在使用的 node 程序位置

bash 复制代码
where node

npm 全局目录

bash 复制代码
npm config get prefix

npm 缓存目录

bash 复制代码
npm config get cache

查看全部 PATH

bash 复制代码
echo %PATH%

结合场景重点说明:

where node 如果输出:C:\Program Files\nodejs\node.exe

→ 就是你 MSI 安装包的默认路径;

如果你后面用绿色免压缩包临时方案,where node 只会找到系统默认 node,不会自动识别解压的旧版本,必须手动临时前置 PATH;

如果你后续卸载 Node:卸载后再运行 where node,理想结果是提示找不到文件。

2.2 📦 nvm-windows安装流程

  1. 版本选型【2026最新建议】
    官方仓库:https://github.com/coreybutler/nvm-windows/releases
  • 日常开发,仅使用Node.js 16+现代版本:下载最新nvm-setup.exe(v1.2.2)
  • 需要长期兼容Node.js14及更早EOL停止维护版本:v1.2.x在安装部分老旧EOL版本存在兼容性问题,推荐选用v1.1.12稳定版;⚠️ v1.1.12对新版Node部分新特性支持有限,按需取舍。

nvm-setup.exe(绝大多数人首选)

Windows 标准安装程序,图形向导安装,自动写入基础环境变量。

✅优点:操作最简单;

❗缺点:后续卸载需要走正常卸载流程,会在系统留下少量配置痕迹。

nvm-noinstall.zip(绿色免安装版)

纯绿色压缩包,无需安装,解压即用,不会自动修改系统环境变量。

重点匹配你的场景:只是临时短期使用,用完想彻底删干净、不留任何系统残留。

✅优点:不想用的时候直接删除整个文件夹,整机无任何遗留文件、注册表;

❗缺点:需要手动配置环境变量,操作多一步。

nvm-setup.zip:把安装程序打包成 zip,等价于直接下载nvm-setup.exe,没必要选。

.checksum.txt:哈希校验文件,用来验证安装包有没有被篡改,普通用户不用下载。

Source code:源代码,开发人员使用,普通使用者忽略。


重要安装路径约束

✅ 安装路径必须纯英文、无空格、无中文、无特殊字符

❌ 禁止路径:C:\Program Files\nvm(存在空格)、C:\用户\张三\nvm(中文用户名)、不要放置OneDrive云同步目录(文件锁引发符号链接异常)

推荐路径示例:C:\nvm

符号链接路径保持默认C:\Program Files\nodejs,不建议修改。

空间不够点此更换安装目录

这个目录 C:\nvm4w\nodejs 是符号链接(软链接)目录

✅ 作用:

执行 nvm use xxx 切换版本时,这个文件夹会动态指向你选中的 Node 版本,系统通过这个路径调用 node/npm。

等价教程里默认的 C:\Program Files\nodejs,不要和你原来安装 Node 的文件夹混淆!

选择建议

直接使用默认路径 C:\nvm4w\nodejs(推荐,省心)

优点:

纯英文、无空格、无中文,完全符合 nvm 要求;

不在受保护的Program Files目录,减少 UAC 权限报错概率;

⚠️ 记住一条硬性规则:

👉 安装完成后,绝对不要手动去新建、删除这个文件夹!由 nvm 自动管理。

直接点击 Next 继续下一步。桌面通知(预览功能)

作用:程序会在 Windows 右下角弹出系统通知,提醒你有新版本发布。

四个勾选项含义:

Node.js LTS releases

收到 Node 长期支持稳定版更新推送通知

Node.js Current releases

收到 Node 最新测试版更新推送通知

NVM For Windows releases

收到 nvm-windows 软件本身新版本通知

Author updates and releases

作者相关资讯、新版工具预告推送

✅ 建议

要是你只是临时短期使用,用完就卸载,完全不需要通知:

把全部四个方框的√全部取消 → 点击 Next

长期使用:

取消最后一项 Author updates and releases(作者资讯预告)

保留前三个勾选:

✅ Node.js LTS releases(稳定长期版更新,生产项目重点关注)

✅ Node.js Current releases(前沿新版本)

✅ NVM For Windows releases(nvm 工具自身升级提醒,修复 bug)

❌ 取消:Author updates and releases(属于作者个人动态,和工具使用无关)标题:作者开发进度邮件订阅(可选)

正文含义:

Author 是 nvm-windows 的下一代继任工具。填入邮箱,你将会收到项目开发进度、发布计划、企业版功能相关邮件通知;输入框留空 = 不订阅邮件。

✅ 推荐操作

直接保持输入框空白,不用填写任何邮箱,点击 Next

该订阅完全非强制,不填邮箱不会影响 nvm-windows 任何功能;

日常前端开发几乎不需要追踪作者新项目进度,避免收到无关邮件;

无论你打算临时使用还是长期使用,都建议留空跳过。

💡补充小知识

Author 是该开发者正在开发的新一代 Node 版本管理工具,属于未来产品,和当前安装的 nvm-windows 相互独立

  1. 安装后环境验证
    全部终端窗口关闭。

⚠️ 首次执行nvm use默认需要管理员权限;永久免管理员可开启Windows开发者模式。

以管理员身份打开CMD/PowerShell:

batch 复制代码
nvm version

✅ 正常输出示例:1.2.2

❌ 新手易错:Windows工具使用 nvm version(单横杠);nvm --version(双横杠)不支持,命令报错。

💡 永久免管理员配置:

Win+I → 隐私和安全性 → 开发者选项 → 开启【开发者模式】

新版 Win11 已经把「开发者选项」从【隐私和安全性】迁移到 系统 → 高级

原理:授予当前用户SeCreateSymbolicLinkPrivilege创建符号链接权限。

边界说明:

  1. Windows内置Administrator账号默认关闭UAC,无需开启开发者模式;
  2. 权限仅对交互式终端生效;计划任务、后台服务进程不受该策略影响
  3. 企业域环境组策略可能强制覆盖本地权限策略,开启后依然无效请联系运维管理员;权限仅对当前登录用户生效。

如果你账户本身属于管理员组,UAC 开启状态下,部分新版 Windows 即便开了开发人员模式,依然会要求管理员终端执行nvm use(微软 UAC 隔离机制)。

精简版 / 品牌 OEM 预装系统、企业域电脑,组策略可能锁定该权限,开启开关也无效。
微软官方规则:

标准普通账户:开启开发人员模式 → 普通终端允许创建软链接

管理员账户(日常绝大多数人):UAC 开启状态下,强制要求「右键以管理员运行」终端

这是 UAC 虚拟化隔离机制,无法靠开发者模式绕过。

👉 这就是很多人开了开关依旧报错的根源!

💡 查看nvm根目录:

batch 复制代码
nvm root

输出格式示例:Current Root: C:\nvm

belike:nvm 根目录 = D:\nvm

所有你后续下载安装的各个 Node.js 版本,都会存放在这个文件夹内部(自动生成 vxx.x.x 子文件夹)。

注意:复制路径只选取冒号后方内容,前缀文本不能粘贴进资源管理器地址栏。

2.3 ⚡ 国内镜像settings.txt标准配置

⚠️ 高频错误约束清单:

  1. 键名与冒号之间必须保留一个英文空格
  2. 镜像URL末尾必须带上斜杠/
  3. node_mirrornpm_mirror两条必须同时配置
  4. 注释统一写在配置顶部,不要穿插在有效配置中间,防止解析异常
  5. 仅推荐npmmirror官方镜像,不要使用不知名第三方镜像源

操作步骤:

  1. nvm root打开根目录,打开settings.txt
  2. 在文件末尾追加配置
txt 复制代码
# Node.js 安装包国内镜像
node_mirror: https://npmmirror.com/mirrors/node/
# npm内置cli下载镜像
npm_mirror: https://npmmirror.com/mirrors/npm/
# proxy: none # 需要代理时解除注释填写地址
  1. 保存文件,重启终端生效。

settings.txt核心参数说明:

  • root:nvm存放各Node.js版本的根目录
  • path:Node.js全局符号链接入口路径
  • arch:默认安装架构32/64
  • proxy:下载代理地址

2.4 📋 nvm-windows 核心命令速查表

全局统一规则:

执行命令输入完整语义化版本(x.y.z)不带v前缀

node -vnpm -v命令输出自带v前缀

命令 功能 关键注意事项
nvm version 查询nvm自身版本 单横杠参数,不要使用--version
nvm root 查看nvm根目录 输出带有Current Root: 前缀
nvm list available 查询远端可安装Node.js版本 优先选择LTS长期支持版本
nvm install latest 安装最新Current正式版
nvm install lts 安装最新远端LTS版本 ✅官方支持关键字;⚠️仅下载安装,不会自动切换为当前使用版本
nvm install 20.18.1 安装指定完整语义化版本
nvm use latest 切换本地已安装最新版本
nvm use lts 切换本地已安装最新LTS版本 ✅官方支持关键字;⚠️本地未安装任意LTS版本时执行直接报错,需要先完成安装
nvm use 20.18.1 切换指定Node.js版本 默认管理员权限,全局永久生效
nvm list 列出本地已安装版本 当前激活版本标注*
nvm current 快速查看当前Node.js版本
nvm on / nvm off 启用/禁用nvm管理 off删除全局符号链接,node命令直接失效;on自动恢复上次激活版本
nvm uninstall 20.18.1 卸载指定版本 不能卸载正在使用中的版本

重点说明:nvm-windows 没有nvm aliasnvm alias default命令nvm use执行后自动永久全局生效,无需额外设置默认版本。

2.5 ✅ 实操演示(双LTS版本安装切换)

⚠️ 20.18.1、24.18.0仅为示例版本,正式使用前通过nvm list available查询最新LTS版本号


nvm list available 只会展示一部分新版本清单,旧版本不会全部列出来!
列表看不到 ≠ 不能安装,直接完整版本号执行安装命令即可。

比如安装 Node 18.20.8

powershell执行

nvm install 18.20.8

会自动识别你的系统安装对应版本

batch 复制代码
:: 安装20.x LTS完整版本
nvm install 20.18.1
:: 安装24.x LTS完整版本
nvm install 24.18.0

:: 查看本地已安装列表
nvm list

:: 切换至20.18.1
nvm use 20.18.1

:: 验证
node -v
npm -v

2.6 📴 内网离线部署方案

  1. 访问npmmirror镜像站,根据系统架构下载对应 win-x64.zip / win-x86.zip 预编译包
    官方哈希文件地址示例:https://npmmirror.com/mirrors/node/v20.18.1/SHASUMS256.txt
batch 复制代码
:: SHA256校验命令
certutil -hashfile node-v20.18.1-win-x64.zip SHA256
  1. nvm root打开nvm根目录,新建文件夹,命名格式v+完整语义化版本 ,示例v20.18.1(必须带v前缀)
  2. 解压压缩包,直接将所有一级文件放入v20.18.1
    ✅ 正确:v20.18.1/node.exe
    ❌ 错误:v20.18.1/node-v20.18.1-win-x64/node.exe(禁止嵌套一层目录)
  3. nvm list识别版本,执行nvm use测试可用;解压后务必检查目录内存在node.exe,避免解压层级错误。

三、🍎 macOS / Linux平台:nvm-sh部署指南

3.1 一键安装脚本

前置依赖:macOS先安装Xcode命令行工具

bash 复制代码
xcode-select --install

前置清理:Homebrew安装过Node.js执行brew uninstall node,规避PATH冲突

官方安装脚本:

bash 复制代码
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash

国内网络异常备选方案:镜像加速raw资源、本地下载install.sh脚本执行。

3.2 Shell持久化配置(zsh/bash)

先确认当前Shell类型

bash 复制代码
echo $SHELL

/bin/zsh → zsh(macOS默认);/bin/bash → bash

zsh 配置脚本
bash 复制代码
if [ ! -f ~/.zshrc ]; then
  touch ~/.zshrc
fi

# 仅当nvm安装文件存在时追加配置,避免终端启动报错
if [ -d "$HOME/.nvm" ] && [ -f "$HOME/.nvm/nvm.sh" ]; then
  if ! grep -Eq '^\s*[^#].*source ~/.nvm/nvm.sh' ~/.zshrc; then
    echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc
    echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.zshrc
  fi
fi

# 重载配置
source ~/.zshrc

# 校验nvm是否正常加载(检测Shell函数,优于command -v)
if [ "$(type -t nvm)" = "function" ]; then
  echo "✅ nvm加载成功"
else
  echo "⚠️ nvm加载失败排查清单:
1. ~/.nvm目录是否完整存在
2. 使用对应终端的配置文件(zsh使用.zshrc)
3. 配置文件语法无错误"
fi
bash 配置脚本
bash 复制代码
if [ ! -f ~/.bashrc ]; then
  touch ~/.bashrc
fi

if [ -d "$HOME/.nvm" ] && [ -f "$HOME/.nvm/nvm.sh" ]; then
  if ! grep -Eq '^\s*[^#].*source ~/.nvm/nvm.sh' ~/.bashrc; then
    echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc
    echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc
  fi
fi

source ~/.bashrc

if [ "$(type -t nvm)" = "function" ]; then
  echo "✅ nvm加载成功"
else
  echo "⚠️ nvm加载失败排查清单:
1. ~/.nvm目录是否完整存在
2. 使用对应终端的配置文件(bash使用.bashrc)
3. 配置文件语法无错误"
fi

补充提示:

  1. 多终端环境(zsh+fish)每个终端独立配置
  2. SSH、定时任务非交互式终端,需要额外在~/.zprofile/~/.bash_profile写入加载脚本
  3. macOS大版本升级可能重置Shell配置,导致nvm失效,重新执行配置脚本修复

验证安装:

bash 复制代码
nvm --version

3.3 国内镜像临时/永久配置

临时生效(当前终端)

bash 复制代码
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/

永久生效:将该行写入.zshrc/.bashrc

Tip:先以npm为主,后期⽹速过慢再考虑cnpm或切换镜像源

默认镜像源https://registry.npmjs.org/

设置npm镜像源

bash 复制代码
npm config get registry
npm config set registry=https://registry.npmmirror.com

3.4 nvm-sh 常用命令清单

命令 功能 备注
nvm --version 查看nvm版本 双横杠
nvm debug 环境自动诊断 排错首选
nvm ls-remote --lts 查看所有远端LTS版本
nvm install --lts 安装最新LTS
nvm install 24 --arch=x64 Apple Silicon强制安装x64架构Node.js
nvm use 24.18.0 切换当前会话Node.js版本 仅当前终端生效
nvm alias default 24.18.0 设置新开终端默认版本 nvm-sh独有功能
nvm ls 列出本地已安装版本
nvm uninstall 24.18.0 卸载版本

3.5 全局包一键迁移

安装新版本Node.js,自动从旧版本重装全部全局工具(仅重新下载安装,不直接复制文件)

bash 复制代码
nvm install 24 --reinstall-packages-from=20

四、📁 项目级版本锁定与团队协作

4.1 .nvmrc 跨平台编写规范

项目根目录新建.nvmrc,文件内写入版本

推荐标准内容(兼容性最强)

复制代码
24.18.0
强制格式规范
  1. 编码:UTF-8 无BOM
  2. 换行符:LF;Windows默认CRLF会携带\r造成匹配失败
  3. 文件内容:仅一行版本号,无首尾空格、无空行
  4. 禁止使用UTF-16编码

Windows记事本新建陷阱:默认保存为.nvmrc.txt;需要开启「文件扩展名」再创建。

PowerShell安全创建命令(避免UTF16编码)

powershell 复制代码
"24.18.0" | Out-File .\.nvmrc -Encoding utf8

Git仓库配套规范:在.gitattributes增加规则,强制.nvmrc使用LF换行,防止Windows用户提交CRLF污染

复制代码
*.nvmrc text eol=lf
跨平台支持边界
  • nvm-sh:原生支持.nvmrc,进入目录直接执行nvm use自动读取版本
  • nvm-windows:官方原生不支持,依赖自定义PowerShell脚本实现自动切换

4.2 Windows PowerShell自动切换脚本

前置提示:

  1. OneDrive同步文档目录会重定向$PROFILE,执行echo $PROFILE确认真实路径,防止修改配置文件不生效
  2. 脚本仅劫持cd命令;pushd/popd不会触发检测,属于设计限制
  3. 与posh-git等修改cd别名的模块存在冲突,异常时移除别名
  4. PowerShell默认Restricted执行策略会阻止脚本加载,执行一次放行:
powershell 复制代码
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

执行notepad $PROFILE打开配置文件,粘贴完整代码:

powershell 复制代码
<#
.SYNOPSIS
进入目录自动读取.nvmrc切换Node.js版本
#>
function Invoke-NvmAutoUse {
    if (-not (Get-Command nvm -ErrorAction SilentlyContinue)) {
        return
    }
    if (Test-Path .\.nvmrc -PathType Leaf) {
        try {
            $rawContent = Get-Content .\.nvmrc -Raw -Encoding utf8 -ErrorAction Stop
            $targetVersion = $rawContent.Trim()
            if (-not ($targetVersion -match '^\d+\.\d+\.\d+$')) {
                Write-Warning ".nvmrc格式异常,请使用完整语义化版本x.y.z"
                return
            }
            $installedList = nvm list
            if (-not $installedList) {
                Write-Warning "本地未安装任何Node.js版本,请先执行nvm install $targetVersion"
                return
            }
            # 修复正则缺陷,防止20.18.1错误匹配20.18.10
            $regPattern = "^\s*\*?\s*" + [regex]::Escape($targetVersion) + "(?=\s|$)"
            $matchResult = $installedList | Select-String $regPattern
            if ($matchResult) {
                Write-Host "📌 检测项目.nvmrc,自动切换至Node.js $targetVersion"
                nvm use $targetVersion
            } else {
                Write-Warning "项目要求Node.js $targetVersion,本地未安装,请执行 nvm install $targetVersion"
            }
        }
        catch {
            Write-Warning "读取.nvmrc异常:$($_.Exception.Message)"
        }
    }
}

function Set-LocationWithNvm {
    [CmdletBinding()]
    param(
        [Parameter(Position=0,ValueFromPipeline=$true)]
        [string]$Path,
        [switch]$PassThru,
        [switch]$LiteralPath
    )
    Set-Location @PSBoundParameters
    Invoke-NvmAutoUse
}
Set-Alias cd Set-LocationWithNvm -Option AllScope -Force

4.3 团队协作最佳实践

  1. 双重版本约束
    package.json增加engines字段,限定Node.js与npm范围
json 复制代码
"engines": {
  "node": ">=20.0.0 <25.0.0",
  "npm": ">=10.0.0"
}

项目根目录新建.npmrc,开启严格引擎校验

ini 复制代码
engine-strict=true

不推荐全局执行npm config set,避免污染所有本地项目。

  1. Monorepo仓库规范:仓库根目录放置统一.nvmrc;子包需要独立版本时,在子包目录单独放置。
  2. Git提交钩子:搭配husky pre-commit校验当前Node.js版本。
  3. GitHub Actions CI配置(自动读取.nvmrc,环境对齐本地)
yaml 复制代码
steps:
  - uses: actions/checkout@v7
  - uses: actions/setup-node@v7
    with:
      node-version-file: '.nvmrc'
      cache: 'npm'
  # 注意:setup-node@v7要求Runner版本≥v2.327.1;私有Runner版本过低会抛出不支持报错
  # 降级v6依然存在最低Runner限制;兜底方案:预先手动下载node二进制
  - run: npm ci
  - run: npm run build
  - run: npm test

五、🚨 新手高频报错全解

报错1:nvm use exit status 5 Access is denied

现象:权限拒绝无法切换

根因:缺少创建符号链接权限,UAC限制管理员普通终端权限令牌。

解决方案:

  1. 临时:管理员身份启动终端执行
  2. 永久:开启Windows开发者模式
  3. 域环境:联系管理员组策略开放SeCreateSymbolicLinkPrivilege

报错2:nvm use提示成功,node -v版本不变

标准化排查顺序:

  1. where node查看所有node路径
  2. 路径包含WindowsApps → 应用执行别名未关闭(最高优先级)
  3. 出现非nvm目录node → 旧Node.js未清理干净
  4. 仅存在nvm符号链接路径 → 重启终端/IDE刷新环境(IDE进程缓存路径)

报错3:切换提示文件被占用 / 操作无法完成

根因:

① 后台node进程占用node.exe;

② Windows Defender「受控文件夹访问」、第三方杀毒拦截符号链接创建,报错文字和UAC权限高度相似,注意区分。

解决方案:

  1. 关闭所有开发服务,任务管理器结束全部node.exe
  2. 将nvm根目录、C:\Program Files\nodejs加入杀毒/受控文件夹访问白名单

报错4:Windows执行nvm --version提示无效命令

根因:参数混淆,Windows使用nvm version

报错5:nvm install下载超时失败

  1. 配置npmmirror镜像源
  2. 删除目录内不完整残留版本文件夹
  3. 内网环境使用离线安装方案

报错6:IDE内置终端版本和CMD不一致

根因:IDE启动时缓存环境变量

VS Code:Ctrl+Shift+P → 重新加载窗口;通用方案:重启IDE。

报错7:切换大版本npm install EINTEGRITY

不同Node.js内置npm版本缓存哈希不兼容

batch 复制代码
npm cache clean --force
rmdir /s /q node_modules
del package-lock.json
npm install

报错8:nvm-windows切换版本后全局命令依然存在、出现兼容崩溃

根因:默认共享%AppData%\npm全局目录,不隔离。

解决方案:出现报错则重新全局安装对应工具;追求完全隔离可手动为每个Node.js版本配置独立npm prefix;推荐使用Corepack管理包管理器。

六、❓ FAQ

Q1:两套nvm核心差异对照表

特性 nvm-windows nvm-sh(macOS/Linux)
程序形态 Go独立二进制 Shell函数,需要加载脚本
切换生效范围 全局所有新启动终端、永久 当前终端会话,新开重置
全局npm包 默认不隔离 天然版本隔离
查看自身版本 nvm version nvm --version
查看远端版本 nvm list available nvm ls-remote
默认版本设置 无alias,use永久生效 nvm alias default
.nvmrc原生支持 ❌ 需要脚本扩展 ✅原生支持
lts关键字 ✅ install/use可用 ✅支持
全局包一键迁移 ❌不支持 ✅--reinstall-packages-from
use是否管理员 默认需要 不需要

Q2:不卸载原有Node.js直接安装nvm?

Windows:强烈禁止,大概率符号链接冲突切换失效;

macOS/Linux:风险较高,建议卸载全局Node.js规避PATH冲突。

Q3:跨大版本切换是否需要删除node_modules?

同大版本小迭代:一般无需删除;

跨大版本(16→20、20→24):建议删除node_modules+锁文件重装,规避原生C++模块二进制兼容问题。

Q4:无管理员权限Windows能用nvm-windows吗?

无法执行nvm use修改系统级符号链接;备选方案:手动解压多版本Node.js,手动维护用户PATH,操作繁琐。macOS/Linux无管理员限制。

Q5:nvm、fnm、Volta怎么选型?

工具 优势 限制
nvm 生态成熟、资料丰富、支持离线手动导入版本 启动速度一般
fnm Rust编写速度快 离线包导入支持较差
Volta 自动感知项目版本,无需手动use 离线部署方案薄弱
选型建议:新手/团队、企业内网优先nvm;个人追求启动速度可选fnm;多项目频繁切换追求无感体验可选Volta。

Q6:企业生产Node.js版本选择?

优先LTS长期支持版本,拥有30个月官方安全维护;Current前沿版本不建议直接上生产。

Q7:使用WSL、VSCode远程容器需要注意什么?

不要混用Windows主机nvm与容器/WSL内Node环境,两套PATH互通极易引发版本错乱,建议容器内部独立管理Node版本。

七、🏢 企业运维进阶方案

7.1 Windows域环境批量静默部署

batch 复制代码
nvm-setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /DIR="C:\nvm" /LOG="C:\nvm_install.log"

参数说明:InnoSetup标准参数;符号链接路径无法通过安装参数指定,安装完成修改settings.txt;

⚠️ /LOG日志路径不要填写系统根目录(如C:\install.log),部分系统阻止直接写入根目录文件。

7.2 故障排查标准化SOP

  1. where node(Windows)/which -a node(macOS/Linux)定位冲突路径
  2. 核对PATH环境变量顺序
  3. 确认符号链接指向目录是否有效
  4. 排查后台常驻node进程占用、杀毒软件拦截
  5. macOS/Linux执行nvm debug自动诊断

7.3 安全建议

  1. 仅官方GitHub下载安装包,杜绝第三方修改版
  2. 内网部署校验安装包、Node.js压缩包哈希值
  3. 定期升级nvm工具获取安全修复
  4. 生产环境约束Node.js版本范围,禁止随意切换未验证版本

📚 参考官方信源

  1. nvm-windows GitHub https://github.com/coreybutler/nvm-windows
  2. nvm-sh 官方仓库 https://github.com/coreybutler/nvm-sh/nvm
  3. Node.js 官方下载文档 https://nodejs.org/en/download/
  4. npmmirror镜像站 https://npmmirror.com/
  5. Microsoft Windows Node开发指南
  6. actions/setup-node官方文档

📌 环境配置流程图

#mermaid-svg-KAWJkVcrKHEfywdQ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KAWJkVcrKHEfywdQ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KAWJkVcrKHEfywdQ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KAWJkVcrKHEfywdQ .error-icon{fill:#552222;}#mermaid-svg-KAWJkVcrKHEfywdQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KAWJkVcrKHEfywdQ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KAWJkVcrKHEfywdQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KAWJkVcrKHEfywdQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KAWJkVcrKHEfywdQ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KAWJkVcrKHEfywdQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KAWJkVcrKHEfywdQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KAWJkVcrKHEfywdQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KAWJkVcrKHEfywdQ .marker.cross{stroke:#333333;}#mermaid-svg-KAWJkVcrKHEfywdQ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KAWJkVcrKHEfywdQ p{margin:0;}#mermaid-svg-KAWJkVcrKHEfywdQ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KAWJkVcrKHEfywdQ .cluster-label text{fill:#333;}#mermaid-svg-KAWJkVcrKHEfywdQ .cluster-label span{color:#333;}#mermaid-svg-KAWJkVcrKHEfywdQ .cluster-label span p{background-color:transparent;}#mermaid-svg-KAWJkVcrKHEfywdQ .label text,#mermaid-svg-KAWJkVcrKHEfywdQ span{fill:#333;color:#333;}#mermaid-svg-KAWJkVcrKHEfywdQ .node rect,#mermaid-svg-KAWJkVcrKHEfywdQ .node circle,#mermaid-svg-KAWJkVcrKHEfywdQ .node ellipse,#mermaid-svg-KAWJkVcrKHEfywdQ .node polygon,#mermaid-svg-KAWJkVcrKHEfywdQ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KAWJkVcrKHEfywdQ .rough-node .label text,#mermaid-svg-KAWJkVcrKHEfywdQ .node .label text,#mermaid-svg-KAWJkVcrKHEfywdQ .image-shape .label,#mermaid-svg-KAWJkVcrKHEfywdQ .icon-shape .label{text-anchor:middle;}#mermaid-svg-KAWJkVcrKHEfywdQ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KAWJkVcrKHEfywdQ .rough-node .label,#mermaid-svg-KAWJkVcrKHEfywdQ .node .label,#mermaid-svg-KAWJkVcrKHEfywdQ .image-shape .label,#mermaid-svg-KAWJkVcrKHEfywdQ .icon-shape .label{text-align:center;}#mermaid-svg-KAWJkVcrKHEfywdQ .node.clickable{cursor:pointer;}#mermaid-svg-KAWJkVcrKHEfywdQ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KAWJkVcrKHEfywdQ .arrowheadPath{fill:#333333;}#mermaid-svg-KAWJkVcrKHEfywdQ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KAWJkVcrKHEfywdQ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KAWJkVcrKHEfywdQ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KAWJkVcrKHEfywdQ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KAWJkVcrKHEfywdQ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KAWJkVcrKHEfywdQ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KAWJkVcrKHEfywdQ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KAWJkVcrKHEfywdQ .cluster text{fill:#333;}#mermaid-svg-KAWJkVcrKHEfywdQ .cluster span{color:#333;}#mermaid-svg-KAWJkVcrKHEfywdQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KAWJkVcrKHEfywdQ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KAWJkVcrKHEfywdQ rect.text{fill:none;stroke-width:0;}#mermaid-svg-KAWJkVcrKHEfywdQ .icon-shape,#mermaid-svg-KAWJkVcrKHEfywdQ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KAWJkVcrKHEfywdQ .icon-shape p,#mermaid-svg-KAWJkVcrKHEfywdQ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KAWJkVcrKHEfywdQ .icon-shape .label rect,#mermaid-svg-KAWJkVcrKHEfywdQ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KAWJkVcrKHEfywdQ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KAWJkVcrKHEfywdQ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KAWJkVcrKHEfywdQ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 仍可调用node
清理完成
版本不一致
版本正常
开始部署nvm
卸载旧Node.js+关闭应用执行别名
清理残留目录、旧符号链接+清理PATH环境变量
新开终端验证node/npm不可用
下载对应平台nvm安装包
配置国内镜像settings.txt
安装目标Node.js版本
管理员终端执行nvm use切换验证
验证IDE终端环境
重载/重启IDE
项目创建.nvmrc并配置git规范
环境部署完成

如果本文对你有帮助,欢迎点赞👍、收藏⭐、评论💬、关注➕!


个人领域:C++/java/Al/软件开发/芯片开发

个人主页:「一名热衷协作的开发者,在构建中学习,期待与你交流技术、共同成长。」

座右铭:「与其完美地观望,不如踉跄地启程」

相关推荐
会周易的程序员8 小时前
js-shm: 高性能 Node.js 共享内存模块
开发语言·javascript·c++·node.js·共享内存·shm
5G微创业12 小时前
Python / Node.js 调用短视频去水印 API 完整示例(含 SDK)
python·node.js·音视频·api·sdk·短视频
寒水馨13 小时前
macOS下载、安装electron-v43.2.0(附安装包electron-v43.2.0-darwin-arm64.zip)
javascript·macos·electron·node.js·跨平台·桌面应用开发·开源框架
hoLzwEge1 天前
拯救低效调试!code-inspector-plugin 让代码定位如虎添翼
前端·前端框架·node.js
无情的西瓜皮1 天前
给 AI 装个“工具箱”:MCP 协议入门与 Node.js 实战
人工智能·node.js
__zRainy__1 天前
Node.js readline 全景指南:createInterface 配置、逐行读取与交互模式
node.js·readline
To_OC2 天前
拼路径读文件总踩坑?我把 Node 的 path 和 fs 彻彻底底捋了一遍
javascript·后端·node.js
星栈2 天前
从装一堆工具到看懂 Node 工程化思维:我的项目复盘记录
后端·node.js
东方小月2 天前
从零开发一个Coding Agent:monorepo项目搭建
前端·后端·node.js