You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署Node.js容器遇@babel/runtime模块缺失,是否需改yarn.lock降级Babel?

解决Heroku部署Node.js容器时的@babel/runtime模块缺失问题

首先,不要手动修改yarn.lock文件——这个文件是Yarn自动生成的依赖锁文件,手动编辑很容易导致依赖树不一致,后续安装或部署时出现更多问题。正确的做法是通过package.json来指定依赖版本,再让Yarn重新生成锁文件。

针对你遇到的Cannot find module '@babel/runtime/helpers/builtin/interopRequireDefault'错误,原因是新版本的@babel/runtime已经移除了builtin目录,而你使用的yup版本依赖了旧的Babel Runtime路径。你提到的降级到7.0.0-beta.55是可行的,但操作方式应该是这样:

步骤1:在package.json中指定Babel相关依赖版本

如果是单项目,直接在根目录的package.json中添加或修改如下依赖:

{
  "dependencies": {
    "@babel/runtime": "7.0.0-beta.55"
  },
  "devDependencies": {
    "@babel/core": "7.0.0-beta.55",
    "@babel/plugin-transform-runtime": "7.0.0-beta.55",
    // 其他Babel相关插件也同步降级到对应版本
  }
}

如果是Monorepo(从你的路径看是packages/common这种结构),需要在对应的子包package.json中做同样的版本指定。

步骤2:重新安装依赖

在项目根目录运行:

yarn install

这会让Yarn根据你指定的版本重新安装依赖,并自动更新yarn.lock文件,确保所有依赖版本匹配。

更优替代方案:升级yup到最新版本

其实降级Babel是临时解决方案,更长久的方式是升级yup到最新版本——新版本的yup已经适配了Babel Runtime的新结构,不会再依赖builtin目录下的模块。你可以直接运行:

yarn upgrade yup --latest

然后重新部署到Heroku,大概率也能解决这个问题。

额外检查:Heroku的构建配置

确保Heroku在部署时正确安装了所有依赖,没有跳过devDependencies(如果你的Babel依赖在devDependencies中,但生产环境需要编译后的代码,要确保构建阶段已经完成编译,或者把必要的依赖移到dependencies中)。

内容的提问来源于stack exchange,提问作者Jeremy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 23:13:11