报错现场
早上来一跑项目,终端直接甩脸:
text
Error: Cannot find module '@rollup/rollup-win32-x64-msvc'
看路径是 Rollup 在加载对应平台的 native 二进制包时找不到文件。奇怪的是,昨天还能跑,今天什么都没改就挂了。
根因排查
这类问题通常不是代码问题,而是依赖版本被"偷袭"了。
Vite 底层依赖 Rollup,而 Rollup 在 4.x 之后对平台二进制包做了比较大的调整。如果 registry 或者 lock 文件出现版本漂移,就可能拉到一个和当前环境不匹配的 @rollup/rollup-win32-x64-msvc 版本,导致启动直接崩。
说人话就是:Vite 把 Rollup 的版本带飞了,但新的 Rollup 和你的运行环境没对齐。
解决方案
在 package.json 里把 Rollup 版本锁死,强制所有依赖都使用同一个版本:
json
{
"resolutions": {
"rollup": "4.9.6"
}
}
如果你用的是 npm,改成 overrides:
json
{
"overrides": {
"rollup": "4.9.6"
}
}
pnpm 用户则可以用:
json
{
"pnpm": {
"overrides": {
"rollup": "4.9.6"
}
}
}
然后重新安装依赖并启动:
bash
# yarn
yarn install
yarn dev
# npm
npm install
npm run dev
# pnpm
pnpm install
pnpm dev
验证是否生效
安装完后,确认一下实际安装的 Rollup 版本:
bash
npm ls rollup
# 或
yarn why rollup
如果输出是 4.9.6,再次启动项目,报错应该就消失了。
小结
这类平台二进制包找不到的错误,本质都是版本不一致闹的。与其每次被 Rollup 的版本更新背刺,不如在 package.json 里把版本锁死,让依赖树稳定下来。