在AWS CodeBuild部署Next.js+React Big Calendar项目失败求助
解决AWS CodeBuild构建失败:@babel/runtime 找不到 ./helpers/esm/callSuper 路径的问题
核心原因分析
本地构建成功但CodeBuild失败,通常是依赖版本不一致或CI环境缓存干扰导致的——react-big-calendar依赖的@babel/runtime版本在CodeBuild环境中与本地不匹配,新版本的@babel/runtime移除了./helpers/esm/callSuper这个导出路径。
具体解决方案
1. 强制清理CI环境依赖缓存
直接在CodeBuild构建命令中清理旧依赖,确保安装全新的匹配版本:
rm -rf node_modules package-lock.json npm install --force
如果用yarn:
rm -rf node_modules yarn.lock yarn install --force
同时可以在CodeBuild项目设置中关闭依赖缓存功能,避免旧缓存残留。
2. 锁定@babel/runtime的兼容版本
查看react-big-calendar的package.json(可在node_modules/react-big-calendar/package.json中找到),找到它依赖的@babel/runtime版本,然后在你的项目package.json中手动锁定该版本:
"dependencies": { "@babel/runtime": "7.22.5" // 替换为react-big-calendar实际依赖的版本号 }
执行npm install更新后,重新触发CodeBuild构建。
3. 配置Next.js的Babel编译规则
在项目根目录创建或修改.babelrc文件,明确指定@babel/runtime的使用配置:
{ "presets": ["next/babel"], "plugins": [ ["@babel/plugin-transform-runtime", { "useESModules": true, "version": "7.22.5" // 与锁定的@babel/runtime版本保持一致 }] ] }
4. 更新react-big-calendar到最新兼容版
旧版react-big-calendar可能和Next.js 13.4.2、Node 18.6.0的环境不兼容,执行更新:
npm update react-big-calendar
本地测试构建通过后,再推送到CodeBuild验证。
5. 确保CodeBuild使用匹配的Node.js版本
在buildspec.yml中明确指定Node版本为18.6.0,避免版本差异导致的依赖解析问题:
phases: install: commands: - nvm install 18.6.0 - nvm use 18.6.0
内容的提问来源于stack exchange,提问作者JsAddicted
相关产品推荐
相关产品推荐

