Vite 项目报错 @rollup/rollup-win32-x64-msvc 的解决与版本锁定

报错现场

早上来一跑项目,终端直接甩脸:

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 里把版本锁死,让依赖树稳定下来。

相关推荐
天道kabuto4 小时前
Webpack 迁 Vite 踩坑记:一个让人抓狂的 Sourcemap 报错怎么破?
webpack·vite
PBitW4 天前
为什么vite中TS报错,可以继续运行?Webpack不行?
前端·webpack·typescript·vite
深念Y9 天前
07-SSR水合问题实战排查与修复记录
前端·vue·vite·nuxt·ssr·csr·水合
进哥AI研习社10 天前
构建工具链深度配置——Vite/SWC 与 Tree Shaking 调优
rollup·vite·构建工具·swc·代码分割·esbuild·tree shaking
PedroQue9910 天前
v1.4.0:新增 defineUniPage 宏声明页面配置,架构全面重构
前端·vite
xiaohe060111 天前
🤔 v-mortal 是什么?!我只知道 v-model 啊!
vue.js·vite·前端工程化
YIAN12 天前
告别等后端!React+Vite 前端独立开发全流程:接口封装 + Mock 方案 + 状态管理
前端·react.js·vite
PedroQue9912 天前
@meng-xi/vite-plugin v1.3.0:generateUni 一键流水线
前端·vite
PedroQue9913 天前
Vite 1.2.0发布:自动生成pages.json
前端·vite