Heroku安装node modules报错:babel-runtime无法访问core-js如何解决
问题原因
这个core-js not accessible from babel-runtime报错属于嵌套依赖版本不兼容问题,既不是单纯的core-js模块缺失,也不是babel-runtime配置错误:
- 你项目中的
@nestjs/cli作为开发依赖,内部依赖了babel相关工具链,而旧版本的babel-runtime需要依赖core-js作为公共基础库 - 你的package.json没有显式声明core-js依赖,Heroku安装依赖时不同嵌套包的版本解析规则冲突,导致babel-runtime找不到对应的core-js依赖路径
解决方案
按顺序执行以下操作即可解决:
- 在本地项目中显式安装core-js到生产依赖:
npm install core-js@3 --save
- 优化
heroku-postbuild脚本,删除冗余的重复安装逻辑:
原脚本的npm install --no-shrinkwrap属于重复执行安装操作,反而会触发依赖版本二次解析的冲突,修改为:
"heroku-postbuild": "npm run build"
如果存在部分开发依赖未正常安装的情况,可以调整为:
"heroku-postbuild": "npm ci --include=dev && npm run build"
- 把本地生成的
package-lock.json文件提交到代码仓库,保证本地和Heroku的依赖版本完全一致,避免跨环境的版本解析差异。
验证
修改完成后重新推送到Heroku部署即可,此时依赖安装阶段不会再出现该报错。
内容的提问来源于stack exchange,提问作者Valery
相关产品推荐
相关产品推荐

