十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Vite 升级后 esbuild 构建失败?3 步彻底修复 transformWithEsbuild 报错

Vite 升级后 esbuild 构建失败?3 步彻底修复 transformWithEsbuild 报错 Vite 升级后 esbuild 构建失败3 步彻底修复 transformWithEsbuild 报错【免费下载链接】viteNext generation frontend tooling. Its fast!项目地址: https://gitcode.com/GitHub_Trending/vi/viteVite 8 升级后报 esbuild 构建失败别急着重装依赖——这多半是 esbuild 从内置依赖变成了可选 peer 依赖peer 依赖需你自己显式安装且版本达标的外部包3 条路径任选其一即可彻底修复。 30秒自诊先花 30 秒确认你是否踩中这个坑命中任意两条即可对号入座。构建日志原文包含Failed to load transformWithEsbuild或Cannot find module esbuild之类的模块缺失报错你的 Vite 已升到 8.x或node_modules里实际生效的 esbuild 版本不在^0.27.0 || ^0.28.0区间比如还停在 0.24.x、0.25.x问题出现在升级 Vite、重装依赖或 CI 全新构建之后本地旧环境一直正常。 到底卡在哪责任在上游Vite 8 把 esbuild 降级成了可选 peer 依赖。白话讲以前 esbuild把 TS、JSX 快速转成浏览器可执行代码的工具是 Vite 自带的标配零件现在改成了自备件——不装不报安装错但一旦你的构建链路里有人用到它就会在运行时才炸出来。证据在 packages/vite/src/node/index.tsexport const esbuildVersion 0.25.0而 packages/vite/package.json 的peerDependencies里写得很直白esbuild: ^0.27.0 || ^0.28.0同时它被标记为 optional所以安装阶段不装也不会拦你。真正暴露问题的在 packages/vite/src/node/plugins/esbuild.ts 的transformWithEsbuild一旦动态加载 esbuild 失败就直接抛出带指引的报错throw new Error( Failed to load transformWithEsbuild. It is deprecated and it now requires esbuild to be installed separately. If you are a package author, please migrate to transformWithOxc instead. )所以结论不是玄学的环境差异而是三方叠加上游把 esbuild 移出默认依赖 你的依赖树里没有显式声明 esbuild很多项目过去靠传递依赖白拿 已装版本落不进 0.27/0.28 区间。三者任一不满足构建就会卡在加载 esbuild 这一步。️ 修复路径三条路径互斥按改动成本从低到高排选一条执行即可别混用。路径一显式安装 esbuild适用绝大多数项目单仓库改动一句话把 esbuild 从白拿改成自己装版本对齐 peer 约束区间。pnpm add -D esbuild^0.28.0验证生效pnpm build构建通过、不再出现Failed to load transformWithEsbuild即修复完成。路径二用 overrides 钉住单一 esbuild 版本适用monorepo、多包共存改动一句话monorepo 里多个子项目可能各自解析出不同 esbuild用 overrides 强制全仓库统一到一个达标版本消除装了两个 esbuild的隐患。在根package.json写入pnpm: { overrides: { esbuild: 0.28.0 } }重装后验证依赖树里只剩一个版本pnpm install pnpm why esbuild输出中 esbuild 只有一行、版本为 0.28.0 即可。路径三回退 Vite 到 esbuild 仍是直接依赖的版本适用暂时不能升级、插件依赖 transformWithEsbuild 且短期无法改造改动一句话降级回最后一个自带 esbuild的 Vite 版本从源头绕开 peer 依赖机制。先查 packages/vite/CHANGELOG.md 确认 esbuild 转为 peer 依赖的具体版本节点取它之前的最后一个版本pnpm add -D vite7验证pnpm build注意这是止血不是终点排期里要补上路径一或插件改造。️ 不再复发的三道保险lockfile 里锁死 esbuild 并定期pnpm update esbuildpeer 依赖的版本区间是闭区间版本悄悄漂出^0.27 || ^0.28就又是同类故障。CI 加一道pnpm install --frozen-lockfile加 peer 依赖检查锁文件与声明不一致时直接让流水线挂掉比生产环境构建失败早暴露一个周期。本地构建环境与 CI 完全同构同样包管理器、同样安装命令升级大版本前先在干净目录完整复现一遍 CI 构建流程pnpm 的严格隔离下本地 npm 能跑不代表 CI 能跑。到 packages/vite/CHANGELOG.md 或 docs/changes/ 查一下变更记录确认你踩的正是哪一版引入的变更。【免费下载链接】viteNext generation frontend tooling. Its fast!项目地址: https://gitcode.com/GitHub_Trending/vi/vite创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表