DEBUG.WIKI
京东云;让 AI 进入真实业务;零售 · 物流 · 客服 · 硬件;查看方案 →
ZgoCloud:多地区部署,按需选节点;日本、美国、香港、德国
Evoxt;最高 6.0GHz CPU;高频云服务器 · 免费每周备份;查看配置 →

Next.js 16 用 Bun 构建时找不到 babel-plugin-react-compiler

旧 Bun 的模块解析兼容实现可能漏传搜索路径,让 Next.js 16 Turbopack 找不到已安装的 React Compiler 插件。核对运行时并验证修复后的原构建入口。

Next.js 16 用 Bun 构建时找不到 babel-plugin-react-compiler

babel-plugin-react-compiler 已经装在项目里,Next.js 16 的 Turbopack 构建仍然失败:

Error evaluating Node.js code
ResolveMessage: Cannot find module
'./node_modules/babel-plugin-react-compiler'

提示还要求把 Babel 插件加入 dependencies 或 devDependencies。如果确认已经声明并安装,继续重复安装插件可能没有帮助。这个故障出现在 Bun 1.3.1、Next.js 16、React Compiler 与 Turbopack 的组合中,已知环境包括 Next.js 16.0.1 和 React 19.2.0。如果同一项目切换到 next build --webpack 能构建,就更应检查运行时和打包路径。

这次问题出在 Bun 的 Node 模块解析兼容实现。Next.js 的 require hook 会覆盖 Module._resolveFilename,并使用 options.paths 指定搜索位置。旧 Bun 调用覆盖后的函数时漏传这个参数;直接调用该解析接口时,也没有正确使用传入的路径。插件虽然存在,解析过程仍可能在错误的位置查找它。

先保留版本和依赖信息:

bun --version
node --version
bun pm ls

再看构建脚本是否有 --bun,以及 CI 或 Docker 使用的 Bun 版本是否与本机一致。一个终端中的 bun upgrade 不会更新远端构建镜像,也不会改变另一个路径下的 Bun 可执行文件。

Bun 1.3.2 包含了这项解析修复。可以先更新 Bun,再重新运行相同构建命令:

bun upgrade
bun --version
bun --bun run build

升级后的版本应至少包含 1.3.2 的修复。这里的 build 是项目中执行 next build 的脚本;若项目使用其他脚本名称,应保留原来的入口。不要把示例命令当成要求额外安装某个全局 Next.js。

暂时无法更新运行时的项目,可以先用 Webpack 对照:

bunx next build --webpack

或者在已安装、满足当前 Next.js 要求的 Node.js 环境中运行本地 Next CLI:

node ./node_modules/next/dist/bin/next build

这些是替换故障路径的办法,仍需验证项目自己的构建、部署产物和功能;不能把 Webpack 一次通过解释成 Turbopack 已修好。关闭 React Compiler 也会改变构建行为,除非明确接受这项变化,否则不宜把它作为默认处理。

复查时保留 React Compiler 配置和原来的 Turbopack 入口,确认缺失插件错误消失,构建能完成页面数据收集和静态页面生成,并用部署时相同的运行时启动产物。若项目生成 standalone 输出,还要检查实际部署目录,避免只验证本机开发命令。

Bun 1.3.2 修复的是这里的模块解析问题。启用 cacheComponents 后加载 SSR chunk 失败属于另一项问题。升级后如果错误变成 Failed to load chunk,应按新的堆栈排查;它不证明插件仍然缺失,也不说明这次修复覆盖了 Next.js 16 与 Bun 的全部兼容性。