Windows环境下已安装Node.js 22.12.0,但Vite持续检测到Node.js 18.20.5导致启动失败
Windows环境下已安装Node.js 22.12.0,但Vite持续检测到Node.js 18.20.5导致启动失败
这种情况我之前在Windows上用nvm4w管理Node版本时也踩过坑,大概率是终端/编辑器的Node环境没有真正切换到位,或者是环境变量、缓存残留导致的。给你几个针对性的排查和解决步骤,按顺序试应该能搞定:
1. 先确认nvm的当前激活版本是否正确
首先打开你用来启动项目的终端(别用编辑器内置的,先单独开系统PowerShell),运行以下命令:
- 查看所有已安装的Node版本:
nvm list
👉 重点看版本前面的*号,必须标在22.12.0上,说明这个版本是当前激活的 - 如果星号不在22.12.0上,手动切换:
nvm use 22.12.0 - 再验证:
node -v和npm -v,确保返回的是22.12.0对应的版本(Node22.x自带的npm一般是10.x左右)
⚠️ 注意:如果你安装nvm时用了管理员权限,那切换版本也得用管理员PowerShell,不然可能切换失败。
2. 检查系统环境变量的优先级
旧的Node18路径可能还在系统环境变量里,而且优先级比nvm的高:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在系统变量的
Path列表里,找有没有类似C:\Program Files\nodejs的旧Node安装路径- 如果有,把它移到nvm的路径(
C:\nvm4w\nodejs)下面,或者直接删除
- 如果有,把它移到nvm的路径(
- 改完之后,必须关闭所有终端和编辑器,重新打开,环境变量才会生效
3. 排查编辑器内置终端的环境问题
很多人用VS Code之类的编辑器,内置终端可能没加载最新的环境变量:
- 完全关闭编辑器(别最小化,要彻底退出)
- 重新打开编辑器,在内置终端里运行
node -v,确认是22.12.0 - 如果还是不对,可以去编辑器设置里,把终端的默认路径改成系统自带的PowerShell(比如
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe),避免用自定义的终端路径
4. 彻底清理项目的依赖和缓存
除了你已经做的,还要清理Vite的本地缓存:
在项目根目录的终端里运行(PowerShell命令):
# 删除node_modules和锁文件 Remove-Item node_modules -Recurse -Force Remove-Item package-lock.json -Force # 清理npm缓存 npm cache clean --force # 重新安装依赖 npm install
5. 检查npm的Node版本绑定
有时候npm会残留旧的Node版本配置:
- 运行
npm config get node,如果返回18.20.5,就执行npm config delete node - 关闭终端重新打开,再验证node版本
6. 终极办法:重启电脑
Windows的环境变量缓存有时候很顽固,改完之后必须重启才能完全刷新。重启后先打开终端确认node -v是22.12.0,再进入项目运行npm run dev。
我当时遇到的情况是VS Code内置终端没加载新环境变量,彻底关闭编辑器再打开就解决了。你按顺序试这些步骤,应该能解决Vite检测旧Node版本的问题。另外补充一句:crypto.hash is not a function这个报错就是因为Node18的crypto模块没有这个方法,Node22.x才支持,所以只要Vite真的用上Node22,这个报错就会消失。




