Windows系统nvm安装与使用指南:解决Node.js多版本管理难题
1. 先搞清楚 nvm 到底解决了什么问题以及它和直接装 Node.js 的区别如果你在 Windows、macOS 或 Linux 上做前端或 Node.js 后端开发迟早会遇到版本问题。比如你手头一个老项目需要 Node.js 14但另一个新项目必须用 Node.js 18 或 20。直接安装多个 Node.js 版本管理起来会非常混乱环境变量冲突、全局包路径错乱是家常便饭。nvmNode Version Manager就是专门解决这个痛点的工具。它不是一个独立的运行时而是一个版本管理命令行工具。它的核心价值就两点一键安装/切换多个 Node.js 版本以及为每个版本隔离全局 npm 包环境。这意味着你可以在同一台机器上为项目 A 使用 Node.js 16为项目 B 瞬间切换到 Node.js 20两个版本的全局 npm 包互不干扰。很多人第一次接触时会把它和直接去 Node.js 官网下载安装包搞混。直接安装是“覆盖式”的你只能有一个“当前生效”的 Node.js。而 nvm 是“仓库式”的它帮你维护一个版本列表你只是从中指定一个来“激活”使用。这个根本区别决定了 nvm 是团队协作、多项目并行开发的标配工具。所以这篇文章适合所有需要接触不同 Node.js 版本的开发者无论你是前端、后端还是全栈。最关键的不是学会安装命令而是理解它的工作逻辑以及如何避开那些让新手头疼的“坑”比如脚本执行权限、环境变量失效、安装缓慢等问题。2. 在 Windows 上安装 nvm选对安装包和注意安装路径虽然 nvm 最初是为 Unix 系统macOS/Linux设计的但在 Windows 上也有官方维护的版本就是nvm-windows。这是你唯一应该去下载的 Windows 版 nvm。不要去 GitHub 找其他同名的非官方项目。2.1 安装前的关键准备卸载现有 Node.js这是最重要的一步但很多人会忽略。如果你之前已经通过安装包.msi方式安装了 Node.js必须先彻底卸载它。否则nvm 无法接管 Node.js 的安装路径和环境变量会导致命令冲突出现node命令指向不明的问题。卸载步骤进入 Windows 的“应用和功能”设置。找到Node.js点击卸载。同时检查并删除可能残留的 Node.js 安装目录通常是C:\Program Files\nodejs\。最好也检查一下用户环境变量PATH删除任何与 Node.js 或 npm 相关的路径。完成这步后你的机器上应该没有node或npm命令可用了。这是正确的起点。2.2 下载与安装 nvm-windows访问发布页打开浏览器访问nvm-windows的 GitHub 发布页面。搜索 “nvm-windows releases” 就能找到。选择安装包下载最新版本的nvm-setup.exe。我建议用setup版本因为它能帮你自动配置系统环境变量比手动配置 zip 包省心得多。安装过程注意点安装路径安装程序会询问 nvm 的安装路径。默认是C:\Users\你的用户名\AppData\Roaming\nvm。我强烈建议就用这个默认路径。不要改到C:\Program Files或其它需要管理员权限的目录否则后续操作可能频繁触发权限提示。Node.js 符号链接路径接下来会问你 “Node.js Symlink” 的路径。默认是C:\Program Files\nodejs。这个路径非常重要。nvm 会在这里创建一个符号链接可以理解为一个快捷方式指向你当前激活的 Node.js 版本。系统环境变量PATH里指向的就是这个目录。所以保持默认即可除非这个目录有特殊权限问题。安装完成后一定要重新打开一个全新的命令行窗口CMD 或 PowerShell。这样新的环境变量才会生效。2.3 验证安装与解决首次运行问题打开新的命令行输入nvm version如果正确显示 nvm 的版本号如1.1.12说明安装成功。但很多人在第一次使用nvm list或nvm install时可能会遇到一个经典的 PowerShell 权限错误这正是热搜词里提到的nvm : 无法加载文件 D:\nvm\nodejs\npm.ps1因为在此系统上禁止运行脚本。这个错误和 nvm 本身关系不大而是 Windows 系统默认的 PowerShell 执行策略Execution Policy限制导致的。它禁止运行未签名的本地脚本。解决方法选一种即可方法一推荐仅当前窗口生效以管理员身份打开 PowerShell执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser然后在弹出的确认提示中输入Y。这仅为当前用户修改策略相对安全。之后在同一个PowerShell 窗口里nvm 命令就可以正常工作了。方法二更便捷如果你不想改策略或者改完依然有问题最直接的办法是改用命令提示符CMD来运行 nvm 命令。nvm-windows 在 CMD 下工作是完全正常的不会触发 PowerShell 的脚本策略。对于日常的版本安装、切换用 CMD 足够了。我个人的习惯是在 CMD 里管理版本nvm install,nvm use在 VS Code 的终端可以设置为 CMD或其它 IDE 终端里进行项目开发。这样可以完美避开 PowerShell 的权限困扰。3. 核心使用流程安装、切换、查看与日常管理nvm 的命令非常简洁核心就是几个动词。下面我们按照实际使用的顺序来走一遍。3.1 查看可安装版本与安装 Node.js安装好 nvm 后第一件事是安装一个 Node.js 版本。查看远程可用版本nvm list available这个命令会列出所有官方可安装的 Node.js 版本号。你会看到很多版本包括最新的 Current 版本、长期支持LTS版本以及较旧的版本。安装指定版本 假设你需要安装最新的 LTS 版本它的代号可能是 “Hydrogen”。你可以直接安装nvm install lts或者安装一个精确版本nvm install 18.19.0安装过程注意nvm 会从 Node.js 官方源下载速度取决于你的网络。如果遇到下载缓慢或超时是因为默认源在国外。我们可以配置淘宝镜像来加速这步很重要nvm node_mirror https://npmmirror.com/mirrors/node/ nvm npm_mirror https://npmmirror.com/mirrors/npm/设置镜像后再执行nvm install命令速度会有显著提升。验证安装安装完成后nvm 默认不会自动“使用”这个新版本。你需要先“切换”到它见下文。但你可以通过以下命令查看已安装的版本列表nvm list或nvm ls你会看到所有已安装的版本前面带*或-的表示当前正在使用的版本。3.2 切换与使用版本这是 nvm 最常用的功能。切换版本nvm use 18.19.0或者如果你安装时用了别名ltsnvm use lts成功后会提示Now using node v18.19.0 (64-bit)。验证切换结果切换后立即检查node -v npm -v这两个命令输出的版本号应该与你刚刚切换的版本一致。同时检查where node命令它显示的 node.exe 路径应该在 nvm 的安装目录下如C:\Users\xxx\AppData\Roaming\nvm\v18.19.0\node.exe而不是其他地方。设置默认版本每次新开命令行窗口nvm 可能会重置。如果你希望某个版本作为默认启动版本可以nvm alias default 18.19.0这样以后新开的终端都会自动使用这个版本。3.3 卸载版本与其它实用命令卸载一个版本nvm uninstall 14.21.3在卸载前请确保你没有正在使用这个版本nvm use到其他版本。查看当前使用版本的安装路径nvm which current这在配置 IDE 或需要绝对路径时有用。快速运行特定版本的 Node.js不切换全局环境nvm run 16.20.2 app.js这个命令会用 Node.js 16.20.2 来运行app.js文件但执行完后你的全局版本还是原来的不会变。适合快速测试。4. 高级场景、常见问题与排查思路掌握了基本命令只是开始把 nvm 用稳还需要处理一些边界情况和问题。4.1 全局 npm 包与版本隔离这是 nvm 的另一个核心优势版本隔离。当你用nvm use切换到 Node.js 18 后用npm install -g yarn安装的全局 yarn只存在于 Node.js 18 的环境下。当你切换到 Node.js 16 时那个全局 yarn 是不可用的你需要重新安装。好处项目环境纯净不会因为全局包版本冲突导致奇怪错误。注意这意味着一些你习惯的全局工具如nodemon,pm2,typescript等需要在每个常用的 Node.js 版本下分别安装一次。4.2 配合项目自动化切换.nvmrc 文件在项目根目录创建一个名为.nvmrc的文件里面只写版本号例如20.11.0然后在该目录下执行nvm usenvm 会自动读取.nvmrc文件中的版本并切换过去。这对于团队协作非常有用确保所有人使用相同的 Node.js 版本进行开发。4.3 WSLWindows Subsystem for Linux中安装 nvm热搜词里有 “wsl安装nvm安装node”。在 WSL 的 Linux 发行版如 Ubuntu中安装 nvm过程和原生 Linux 一致通常更简单。通过 curl 或 wget 下载安装脚本curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash或者wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash注意版本号v0.39.7请替换为当时最新的稳定版。安装脚本会自动克隆仓库到~/.nvm并尝试在~/.bashrc,~/.zshrc等文件中添加源。安装完成后你必须关闭当前终端重新打开或者执行source ~/.bashrcnvm 命令才会生效。之后的使用命令和 Windows 版完全一样nvm install,nvm use等。WSL 中的 nvm 和 Windows 宿主系统中的nvm-windows是完全独立的两个东西它们管理的 Node.js 版本也互不干扰。4.4 典型问题排查链路当 nvm 命令不按预期工作时按这个顺序排查命令未找到输入nvm提示不是命令。Windows检查是否以管理员身份运行了安装程序是否在安装后打开了新的 CMD/PowerShell 窗口环境变量NVM_HOME和NVM_SYMLINK是否已添加可以回看安装路径章节。macOS/Linux/WSL是否执行了source ~/.bashrc或重启了终端安装脚本是否成功修改了 shell 配置文件可以用cat ~/.bashrc | grep nvm查看。切换版本后node -v没变首先确认切换命令是否成功有成功提示。执行where nodeWindows或which nodemacOS/Linux。如果显示的路径不是 nvm 目录下的比如还是旧的C:\Program Files\nodejs说明系统PATH环境变量中旧 Node.js 的路径优先级更高。回到第一步彻底卸载旧版本 Node.js。nvm use需要管理员权限这通常发生在 Windows 上如果你把 nvm 或 Node.js 的符号链接装到了受保护目录如C:\Program Files。解决方案就是卸载重装使用默认的、不需要管理员权限的用户目录路径。安装 Node.js 版本失败网络问题最常见配置淘宝镜像加速。权限问题确保 nvm 安装目录有写入权限。杀毒软件/防火墙拦截暂时禁用或添加例外。磁盘空间不足检查目标磁盘。全局 npm 包丢失记住这是特性不是 bug。每个 Node.js 版本有独立的全局node_modules。切换到新版本后常用的全局工具需要重新npm install -g一次。4.5 与其它工具如 nvs, fnm的简单对比nvm 不是唯一选择但是最经典、社区最广的。类似工具还有nvs(Node Version Switcher, 跨平台由微软维护)、fnm(Fast Node Manager, 用 Rust 写速度更快)。它们核心功能相似区别在于nvm最稳定功能最全文档最丰富支持.nvmrc但 Shell 启动稍慢因为它是 Shell 脚本。fnm启动速度极快兼容.nvmrc但相对年轻某些边缘场景可能不如 nvm 成熟。nvs跨平台体验一致支持自动根据.nvsrc切换。对于绝大多数开发者从nvmWindows 用nvm-windows开始是最稳妥的选择。它的所有“坑”基本都被踩过一遍解决方案网上也最全。最后我建议你把 nvm 的常用命令list,install,use,alias default记熟再把镜像配置好。真正开发时90%的时间你只需要nvm use这一个命令。管理多版本 Node.js 环境从此应该是一个轻松、可预测的过程而不是一个玄学问题。如果在团队中推广务必统一使用.nvmrc文件这是保证开发环境一致性的最低成本方案。

相关新闻

写小说用什么软件好?5款网文作者AI小说生成器实测,从大纲到正文全搞定!

写小说用什么软件好?5款网文作者AI小说生成器实测,从大纲到正文全搞定!

想靠写小说赚点外快,结果盯着屏幕发呆三小时,硬是憋不出半个字。 我自己以前也走过这些弯路,试了一堆写小说的软件,最后要不是前后设定打架,要不就是疯狂卡文。其实大家不用那么焦虑,关于新手如何开始写小说…

2026/10/15 23:24:35 阅读更多 →
Pandoc 实战:从 Markdown 到专业 PDF 的自动化排版指南

Pandoc 实战:从 Markdown 到专业 PDF 的自动化排版指南

1. 从 Markdown 到专业 PDF:为什么你需要 Pandoc?如果你经常写技术文档、学术报告,或者像我一样,喜欢用 Markdown 来整理笔记和博客草稿,那你一定遇到过这个需求:如何把一份清爽的.md文件,变成一…

2026/10/15 16:20:09 阅读更多 →
单片机毕业设计-基于 STM32 单片机的环境温湿度水位采集与自动调控装置设计 基于 STM32 的智能加湿补水监测与声光报警系统设计与实现(011603)

单片机毕业设计-基于 STM32 单片机的环境温湿度水位采集与自动调控装置设计 基于 STM32 的智能加湿补水监测与声光报警系统设计与实现(011603)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/14 15:56:16 阅读更多 →

最新新闻

PDF转Word不再难:iLovePDF实操与替代方案全解析

PDF转Word不再难:iLovePDF实操与替代方案全解析

做了这么多年文字工作,PDF转Word这个需求,我几乎每周都会遇到。客户发来一份排版很漂亮的PDF,要我改一句话,我不可能从头重排一遍,只能先把PDF转成可编辑的Word文档。这类需求看起来简单,真正操作过的人都知…

2026/10/15 23:24:42 阅读更多 →
综合布线核心术语解析:永久链路、NEXT、回波损耗与认证测试

综合布线核心术语解析:永久链路、NEXT、回波损耗与认证测试

1. 什么是综合布线?——不是“拉几根网线”那么简单“综合布线专业术语”这八个字,乍看像教科书目录里一页翻就过的章节标题,但在我带过二十多期弱电实训班、参与过三十多个楼宇智能化项目落地的实操经验里,它从来不是背诵清单&am…

2026/10/15 23:24:42 阅读更多 →
微信小程序课堂考勤系统毕设资源:Spring Boot+MySQL全链路拆解与防作弊实践

微信小程序课堂考勤系统毕设资源:Spring Boot+MySQL全链路拆解与防作弊实践

简介:这份资源是面向高校计算机相关专业学生与指导教师的毕业设计资料,围绕基于微信小程序的课堂考勤系统展开,可用于毕业设计选题、开题与论文撰写参考。资源包共1个docx文件,约23KB,内容涵盖任务书、开题报告、论文与…

2026/10/15 23:24:42 阅读更多 →
海康ISC平台Flutter视频播放插件:多协议自适应与平台深度集成

海康ISC平台Flutter视频播放插件:多协议自适应与平台深度集成

1. 项目概述:为什么需要一个专为海康ISC平台设计的Flutter视频播放插件“海康isc平台flutter版视频播放插件”——这十个字背后,是安防行业数字化升级浪潮中一个真实、高频、长期被忽视的断点。我接触过不下二十个正在用Flutter重构安防类移动应用的团队…

2026/10/15 23:24:42 阅读更多 →
高低压都稳的恒温花洒!汉玛克,大平层旧房都适配

高低压都稳的恒温花洒!汉玛克,大平层旧房都适配

很多人选高端花洒,容易被外观营销迷惑。但真正做过大平层精装、酒店民宿工装的人明白:花洒的核心竞争力藏在阀芯、适配性与长期耐用性里,而不是表面颜值。HIMARK汉玛克,很少做网红流量宣传,却是不少设计师、工程甲方私…

2026/10/15 23:24:42 阅读更多 →
PS5远程串流优化实操:第三方客户端与参数调校完全指南

PS5远程串流优化实操:第三方客户端与参数调校完全指南

说到PS5远程串流,我估计大多数人的第一反应都是官方那个Remote Play App。能用,但也仅仅是“能用”。画面偶尔糊成一团、延迟飘忽不定、支持设备被卡得死死的,明明手里一台旗舰手机、一台轻薄本,结果玩起来跟十年前云游戏似的。我…

2026/10/15 23:23:42 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →