FEATURED · 精选文章

Windows下升级Node.js和npm到最新版本的完整攻略

发布时间 / 2026/9/19 19:49:12
来源 / 创域科博编辑部
栏目 / 资讯中心
Windows下升级Node.js和npm到最新版本的完整攻略 很多做前端或者Node.js相关开发的朋友在 Windows 上一定遇到过这样的尴尬明明自己用 npm 装了一堆依赖包但是 npm 本身报错了或者是npm run build构建脚本跑不起来一查才发现是 Node.js 版本太旧npm 也跟着不干活。更常见的是从官网下载的 Node.js 安装包自带了一个 npm但那个 npm 版本可能不是最新的你想要升级 npm 还得单独折腾。这篇文章就专门聊聊在 Windows 系统下如何把 node.js 和 npm 都更新到最新版本。我尽量把原理和步骤都讲透并且把我自己踩过的坑、试过的好用的方案都放进来适合刚接触 Node.js 的新手也适合那些想在 Windows 上把开发环境收拾利索的老手。看完之后你应该就能明白为什么npm install动不动就报一堆 warn为什么某些包要求 Node 版本必须18以及怎么干净地把环境升级到位而不是把系统弄成一团浆糊。1. 更新之前必须先搞清楚的版本问题1.1 Node.js 和 npm 是两个东西但互相绑定很多人以为升级 Node.js 就等于升级 npm其实两者是独立的只是 npm 会随着 Node.js 安装包一起捆绑发布。如果你只是运行npm install -g npm那只会更新 npm 本身Node.js 版本还留在原地。反过来如果你重新安装了新版 Node.js 安装包通常情况下会和匹配的 npm 一起更新但也不一定是最新的 npm因为官方安装包里面的 npm 版本有时候会滞后一个小版本。在动手之前你得先知道当前环境的状态。Windows 下打开命令行CMD 或 PowerShell执行下面两条命令node -v npm -v我见过不少人直接对着这个输出就蒙了为什么node -v显示v18.20.0而npm -v显示10.8.0这其实是正常的Node 18 的 LTS 版本对应 npm 10.x。但如果你看到 npm 版本是 6.x 或者 7.x那确实该考虑升级了因为很多新包为了安全和性能已经不再兼容老旧的 npm 客户端。1.2 为什么要追最新版本简单说新版本的 Node.js 解决了老版本的安全漏洞、提升了 JavaScript 引擎 V8 的性能并且支持更多的现代语法。而新的 npm 客户端对依赖解析、锁文件、缓存机制都有改进npm install的速度和稳定性会明显更好。另外现在很多 CLI 工具比如创建项目用的脚手架会直接声明node 18这样的前提条件如果你的 Node 版本太旧连工具都装不起来。但我也得给你提个醒追新没问题但不要盲目追到最新的非 LTS 版本。Node.js 官方发布节奏是每年交替出一个偶数版本作为 LTS 长期支持版比如 20、22以及一个奇数版本作为当前版比如 21、23。LTS 版本在开发环境里更稳npm 生态也跟得最紧。所以“最新版本”这个说法在你自己的机器上建议理解为“最新的 LTS 版本”而不是所谓的 nightly 或者 current 版。1.3 更新前要做的检查拿到当前版本之后别急着开装先看一眼你机器上有没有别的 Node 环境管理器比如 nvm-windows、n如果有那不建议再去用官方安装包覆盖安装避免 PATH 和安装目录冲突。另外全局安装过的 npm 包也要有个心理准备一般不会被卸载但个别带有原生编译依赖的包可能需要在 Node 大版本切换后重新编译。我个人习惯是在更新前先执行一次npm cache clean --force这一步不是必须的但可以避免旧缓存里的元数据干扰新版本 npm 的读取。接下来核心任务就是选一种适合自己的更新方式把 Node.js 主程序替换掉再让 npm 保持最新。2. Windows 下三种主流更新方案怎么选2.1 官方安装包覆盖安装这是最直观的方式去 Node.js 官网下载最新的 Windows Installer.msi 文件然后双击安装让它覆盖旧版本。官网地址是https://nodejs.org/en/download这里会同时给出 LTS 版本和 Current 版本如果你没有特殊需求直接下载 LTS 的那个.msi即可。安装过程中向导一般会问你“是否安装 npm 包管理器”默认是勾选的保留这个勾。还会问你是否把 Node.js 和 npm 加入 PATH默认也勾选。一切都默认就好一路 Next。这样覆盖安装的好处是系统会把新版本的 node.exe 放进原来安装目录PATH 不用改npm 也会跟着更新到和 Node 匹配的新版本。这种方式的缺点也很明显你没法同时保留多个 Node 版本。比如你手上有的老项目锁定了 Node 16非要跑在 Node 22 上可能不行覆盖安装之后就得再折腾降级。另外如果你之前是通过压缩包解压配置的方式安装的 Node那就不要用这个 .msi 覆盖很可能把 PATH 指向一个孤零零的新目录。2.2 使用 nvm-windows 做版本管理这是我最推荐给经验丰富的开发者的方案。nvm-windows 是一个 Node 版本管理器注意它和 Linux/macOS 上的 nvm 不是同一个项目但功能类似你可以在同一台 Windows 机器上安装多个 Node 版本随时切换当前需要哪个版本就切哪个版本。它的下载地址在 GitHub 的coreybutler/nvm-windows仓库找到最新的nvm-setup.exe下载安装。安装时它会自动检测你 PATH 里原来的 Node.js 并建议你卸载这一步最好照做因为它要接管你所有对 node 命令的管理。安装完成后命令行里先执行nvm version如果输出了版本号比如1.1.12就说明安装成功。接下来nvm list available nvm install 22.14.0 nvm use 22.14.0这里22.14.0是我写这篇文章时较新的 LTS 版本号你实际操作时用nvm list available查看选最新的 LTS 即可。nvm use之后再执行node -v应该就看到新版本了。npm 会跟随当前 Node 版本一起被管理不需要你再手动全局升级。nvm-windows 最大的好处是切换零成本。比如你要跑老项目nvm use 16.20.2再跑新项目nvm use 22.x.x只需要切换命令不污染一遍环境。唯一的坑是nvm 管理的 npm 偶尔因为安装时网络问题导致不完整这时候一般通过nvm install卸载重装对应版本就能解决。2.3 直接使用 npm 自身升级如果你确定只留一个 Node 版本并且只想把 npm 升上去可以不用动 Node 主程序。在命令行里执行npm install -g npmlatest这个命令会从 npm 官方源或者你配置的镜像源拉取最新的 npm 包然后全局安装。执行完以后关掉当前命令行窗口再开一个新的再执行npm -v看看版本号如果升上去了就说明成功。这里有个小坑如果当前 npm 版本太旧可能有兼容性问题导致升级不成功。我遇到过 npm 6 升级失败的情况报错信息千奇百怪。比较稳妥的办法是先用官方安装包把 Node.js 升到 18再执行这条命令这样 npm 本身至少有 10 的底子升级会顺很多。3. 实操基于官方安装包完整更新 Node.js 和 npm3.1 下载并安装新版 Node.js如果你选的是官方安装包路线先确认自己要下载哪个版本。点开官网后页面默认显示 LTS 版本和 Current 版本。Current 版本通常有更先进的特性但稳定性不如 LTS。如果你是生产环境或者跑重要项目我建议 LTS。下载.msi文件时注意位数选择一般 Windows 64 位系统就选64-bit32 位老机器才选32-bit。下载完成后如果旧版本正在运行node 进程或终端先全部关掉否则安装文件可能因为文件占用报错。双击.msi一路 Next直到出现“Change, repair or remove installation”界面时选择“Change”让它覆盖更新即可。这一步实际是把旧版本的二进制文件替换成新版本但全局 npm 包目录一般会保留。装完之后打开一个新的命令窗口验证一下node -v npm -v如果 node 版本变成了你刚装的版本npm 也变成了对应版本就说明这一步成功了。但注意某些情况下 npm 可能还是旧版本因为安装包不是每次都重新解析 npm 包。这时候就需要手动再更新一次 npm。3.2 让 npm 也更新到最新Node 官方安装包内捆绑的 npm 版本通常经过测试比较稳但未必是最新的。你可以在命令行里执行npm install -g npmlatest如果你网络环境访问 npm 官方源很慢可以先用镜像源安装然后再恢复。我个人习惯直接配好国内镜像源比如腾讯、阿里的 npmmirror这样下载速度快很多。配置镜像源的方法npm config set registry https://registry.npmmirror.com然后再次执行npm install -g npmlatest更新完成之后看版本npm -v这时候如果输出了一个很早的新版号比如10.9.x或11.0.x说明 npm 也到位了。注意升级全局 npm 后建议重新加载终端窗口不要在同一个窗口里继续操作不然可能因为 PATH 缓存或者 shell 缓存感觉命令没生效。3.3 检查全局包的兼容性升级完 Node 和 npm 之后你之前全局安装的一些工具比如yarn、pnpm、ts-node、nodemon等大概率还在因为它们位于 npm 全局目录下。但我建议你运行一下npm ls -g --depth0看看有没有明显报错项或者标记为 invalid 的包。如果有通常是这些包依赖了旧 Node 的内置模块大版本升级后不兼容了。解决办法是重新安装有问题的那个包例如npm install -g yarn这样它会基于新 Node 版本重新拉取最新的兼容版本。3.4 我的建议这条路线适合简单场景官方安装包覆盖更新的优势是操作简单跟装普通软件一样适合只是偶尔用 Node、不想折腾多版本管理的用户。缺点是你对大版本切换几乎没有回旋余地。你要是升级到 Node 22 之后某天发现老项目跑不了想退回 Node 16最省事的办法还是卸载当前 Node再下载 Node 16 的.msi重新装。这个过程很烦所以我个人更倾向用 nvm-windows 来管理一切。4. 实操基于 nvm-windows 的版本升级和切换4.1 安装与初始化 nvm-windows如果你决定用 nvm-windows首先把系统里现有的 Node.js 卸载掉。这里有个细节控制面板里卸载 Node.js 之后最好再检查一下安装目录默认是C:\Program Files\nodejs是否已经不存在如果还在就手动删除残留文件。另外清理一下环境变量里手动添加过的NODE_PATH或者NODE_HOME不然可能会和新装的 nvm 冲突。下载nvm-setup.exe后双击安装。安装过程中它会问你两个目录一个是 nvm 自身的安装目录一个是 Node.js 版本实际存放的符号链接目录。默认情况下 nvm 装在C:\Users\用户名\AppData\Roaming\nvmNode 版本的快捷入口在C:\Program Files\nodejs。这里我建议保留默认但心里要有个数每次nvm use的时候nvm 会修改C:\Program Files\nodejs这个软链接让它指向特定版本目录。打开一个新的命令行窗口输入nvm list如果你刚安装完这个列表是空的。输入nvm list available这个命令会列出远程所有可下载的 Node 版本。注意这里的信息可能受镜像源影响。如果你在 nvm 安装目录下的settings.txt里配置了镜像地址那么available列出的就是该镜像支持的版本。4.2 安装最新 LTS 版本假设我们确认最新的 LTS 版本号是22.14.0或者你看到的实际最新 LTS比如20.19.x执行nvm install 22.14.0这一步会下载并解压 Node 到 nvm 目录下的v22.14.0文件夹。下载速度取决于网络和镜像。如果你在下国内环境建议在settings.txt里加上这两行镜像配置node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/npm/不过现在淘宝镜像域名已经改成npmmirror.com了更稳定的写法是node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/设置之后再次nvm install速度会快很多。4.3 切换版本并验证安装完成之后执行nvm use 22.14.0这里有个常见坑命令行提示“exit status 1”或者“cannot run from a directory with a space in its name”。前者一般是权限问题用管理员权限打开 CMD 再执行后者是因为 nvm 在带空格的路径下有时会罢工解决办法是切换到非空格的目录比如C:\或者直接管理员身份运行。切完之后node -v和npm -v都应该指向新版本。你可以再执行nvm list输出里当前使用的版本前会标一个*。4.4 nvm 模式下 npm 的更新策略用 nvm 的情况下npm 实际上是随着 Node 版本走的不需要也不应该用npm install -g npmlatest去全局升级——因为 nvm 切版本之后你的全局 npm 又会被切换成目标版本自带的 npm之前升级的全局 npm 相当于白搭。正确的做法是先nvm use切到想要的 Node 版本然后如果需要比自带 npm 更新的版本再单独在某个版本下更新。但我建议一般不要这么做因为 Node 官方配套的 npm 版本已经经过兼容性验证没必要光为了小版本号去冒险。不过有个例外你可以在 nvm 管理的某个版本里用npx npmlatest -v来临时调用新版本的 npm而不用覆盖安装这样能用来跑那些要求 npm 版本较高的构建命令。4.5 我对 nvm-windows 的整体评价从 Windows 开发者的角度来说nvm-windows 是目前最省心的多版本管理工具没有之一。虽然它有少量莫名其妙的小毛病比如偶尔需要管理员权限、切换到某个版本后全局包路径变化但整体带来的灵活性是值得的。它尤其适合那种需要在多个项目之间横跳、每个项目锁不同 Node 版本的场景。可以说装好 nvm-windows之后每次“更新 Node 到最新版本”也就是两条命令的事再也不用每次跑去官网下载安装包了。5. npm 镜像源配置和升级后的环境清理5.1 镜像源是什么、为什么要配npm 默认的官方源是https://registry.npmjs.org/在国内访问时经常出现超时、速度极慢、甚至直接失败的情况。所谓“镜像源”就是在国内搭建的、定时同步 npm 包数据的服务器。配置之后你执行npm install时会从镜像源下载依赖包速度和稳定性会好很多。查看当前源npm config get registry如果输出的是https://registry.npmjs.org/那么大概率在国内环境安装依赖时会有卡顿。配置成国内镜像源npm config set registry https://registry.npmmirror.com之后再用npm config get registry确认一下。这样你就不用在更新 npm、安装依赖时反复纠结网络问题了。5.2 升级后缓存和临时目录的清理升级到新 npm 之后有些陈旧的缓存数据可能留着。用下面的命令强力清理npm cache verify这个命令会比npm cache clean --force温和一些只检查并移除损坏的缓存数据。如果你发现某些包安装时不断报“integrity check failed”说明本地缓存里的元数据和镜像源不一致那就执行一次彻底的npm cache clean --force另外npm cache都会放在用户目录下的_cacache文件夹里。如果你磁盘空间紧张也可以手动删除C:\Users\用户名\AppData\Local\npm-cachenpm 下次会自动重建缓存目录。5.3 全局包目录的检查升级完版本后用npm root -g看看全局包放在哪里。比如输出是C:\Users\用户名\AppData\Roaming\npm\node_modules。更新前安装的全局包都还在这个目录下但如果你用官方安装包升级并发现某个全局命令找不到那么多半是npm prefix -g变了或者 PATH 里指向的位置变了。这时候可以执行npm prefix -g确保 npm 全局目录是包含在环境变量 PATH 里的。如果不在就去系统环境变量里加上这个目录否则你安装的 CLI 工具比如vue、create-react-app会提示“无法识别”。5.4 环境变量 PATH 的检查与修复有时升级过程中PATH 会被安装包修改得不干净。最常见的情况是同时存在C:\Program Files\nodejs\和旧版本的路径导致命令行里调用的 node 不是预期的那个。解决办法是按 WinR 输入sysdm.cpl打开“系统属性 - 高级 - 环境变量”在“系统变量”里找到Path把和 Node.js 相关的项整理成一条干净路径。如果你用 nvm-windowsPath里通常会有C:\Program Files\nodejs这条路径由 nvm 动态指向你正在使用的版本。手动改它没有用应该通过nvm use去切换。如果你用官方安装包Path 里应该也只有C:\Program Files\nodejs\这一条。如果有多余的旧目录条目删掉它然后重启命令行。6. 更新后常见报错与排查技巧实录6.1 执行 npm 命令提示“无法加载文件 npm.ps1因为在此系统上禁止运行脚本”这是 Windows PowerShell 的执行策略问题。安装 Node 后如果你在 PowerShell 里直接运行npm而系统默认禁止未签名脚本就会报这个错npm.ps1 cannot be loaded because running scripts is disabled on this system。解决办法是以管理员身份打开 PowerShell执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser然后选择Y确认。这个命令的意思是一律信任本地脚本只对远程下载的未签名脚本保持限制。之后再打开新的 PowerShell 窗口运行 npm 命令就正常了。如果你不想改执行策略也可以直接在 CMD 里跑 npm 命令或者用npm.cmd代替npm命令。但长期用下来还是把执行策略改了方便。6.2 命令提示“无法将 npm 项识别为 cmdlet、函数、脚本文件或可运行程序的名称”这个报错说明 npm 不在 PATH 里或者安装已经损坏。先确认 Node.js 安装目录是否存在比如C:\Program Files\nodejs\npm.cmd。如果文件都在那就是 PATH 没配好。打开环境变量编辑确保C:\Program Files\nodejs\在 Path 中然后重新打开命令行再试。如果文件不存在那多半是 Node.js 卸载不干净或者安装失败了。重装一次官方安装包一般能修复。6.3 npm 安装依赖时报 deprecated 警告比如常见的npm warn deprecated node-domexception1.0.0: use your platforms native DOMException。这类 deprecated 警告只是提示该依赖包已过时鼓励换用原生实现通常不会直接导致失败。如果你看到一堆 deprecated 警告却还是能装上依赖那就无所谓。但如果你希望少一点警告可以去 package.json 里排查有没有显式依赖了这些旧包升级依赖版本即可。6.4npm run build或npm run dev执行报错这类问题比较杂但一般跟 Node/npm 大版本更新后项目里的依赖没有重新安装有关。升级版本之后我强烈建议不要直接npm run build而是先删掉node_modules目录和package-lock.json再重新安装依赖rm -rf node_modules package-lock.json npm install这样保证依赖是基于新 Node 版本重新解析的能避免很多因锁定文件或旧二进制模块引起的崩溃。如果你的项目用了 Windows 下的脚本命令执行时报“windows脚本命令闪退”先别急着怀疑 Node。先在命令行里直接跑一次构建命令看完整报错输出多半能定位到是哪个模块编译失败或者哪个环境变量没配好。最常见的其实是node-gyp需要 Python 和 Visual Studio 构建工具如果以前没装过升级 Node 后会踩到编译原生模块的坑。解决办法是安装windows-build-tools或直接安装 Visual Studio Build Tools不过这是另一个大话题了。6.5node:util或node:fs等子路径导入报错如果你看到类似“the requested module node:util does not provide an export named”的报错大概率是依赖包和你 Node 版本不匹配。升级 Node 后某些内置模块的导出发生了变化而老旧的第三方包还引用旧导出。这种情况下最好的办法是升级有问题的包版本或者用 nvm 临时切回旧版本跑项目直到依赖方修复兼容性。6.6 关于 Node 版本号提示“not yet released”如果你在安装某个指定版本时看到node.js v24.21.0 is not yet released or is not available.说明该版本在当前选择的镜像源里不存在或者版本号拼写错误。可以用nvm list available先确认可用的版本列表再重新安装。另外如果你用官方安装包就下不到不存在的版本不值得纠结。7. 更新之后最重要的事版本更新完成后不要以为万事大吉。第一步确认现有项目能跑挑一个你最常启动的项目删掉node_modules重新安装依赖执行一次npm run build或者开发命令确认从安装到构建整套链路都通。第二步确认常用全局工具可用试一下你依赖的 CLI 工具比如vue --version、yarn --version、pnpm --version如果命令能显示出版本号说明工具链正常。第三步如果某一天你遇到奇怪问题先别慌。用node -v和npm -v确认当前环境再回忆一下最近改过什么配置。多半问题不是 Node 本身坏了而是 PATH 混乱或者全局 npm 包冲突。从我个人经验来看Windows 上更新 Node.js 和 npm 这件事最大的“坑”从来不是操作有多难而是你机器上历史残留太多旧安装目录、手动配置的 PATH、多版本并存、镜像源设置混乱、PowerShell 策略限制这些叠加起来才导致很多新手一更新就翻车。所以更新的第一步永远是先理清现状第二步选择一条干净的路线第三步才去执行更新动作。如果你还在用官网安装包一条路走到黑我建议你至少在本地装一个 nvm-windows体验一下多版本切换的感觉。它既能追新也能退回老版本遇到项目不兼容的时候切一下版本就完事根本不用重装系统或者卸载半天。最后再补充一个小技巧每次切完 Node 版本之后如果发现某些全局命令失效检查一下是不是没有重新打开终端窗口Windows 下环境变量变更对已打开终端不会生效这是我见过最多的“假故障”。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻