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

相关推荐
定栓2 天前
Webpack迁到Vite第十节:vite.config.js 开发与构建流转全链路
vue.js·webpack·vite
定栓2 天前
Webpack迁到Vite第二节:JSX 到 Render 函数
vue.js·webpack·vite
NetX行者5 天前
用 Vite + Vue3 + UnoCSS 搭建企业级项目模板(一):基础骨架
vue·vite·unocss
孟陬6 天前
不用盲调性能参数 Vitest 5.0 新推出 `vitest doctor` 一键诊断测试慢卡点,自动给出最优提速配置
性能优化·单元测试·vite
cindershade8 天前
大包不是一个数字:Vite 构建体积的责任归因与边界治理
vite
cindershade15 天前
首屏不是 dist:用“加载账本”治理 Vite 的大包
性能优化·vite
陪我一起学编程17 天前
vue3笔记
前端·webpack·vue3·vite·脚手架·vue3笔记·组件式
向北丶1 个月前
vite项目中配置alias别名
前端·vite