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

部署React Rails应用到Heroku时出现Cannot find module '@babel/preset-react'错误

问题根因

Heroku 生产环境部署 Node 相关项目时,默认仅安装 package.json 中 dependencies 字段下的依赖,不会安装 devDependencies 下的开发依赖。你当前将转译 React 代码必需的 @babel/preset-react 放在了 devDependencies 分类中,但 Rails + Webpacker 生产环境构建前端资源时需要调用该模块,因此触发找不到模块的报错。本地环境执行 npm install 时默认会安装全部依赖,因此运行正常。

解决方案

推荐优先使用方案1,体积更小更符合生产规范:

方案1:调整依赖分类

将所有生产构建时需要用到的 Babel 转译相关依赖从 devDependencies 移动到 dependencies 中,修改后的 package.json 参考如下:

{
  "name": "App",
  "private": true,
  "dependencies": {
    "@babel/plugin-syntax-jsx": "^7.14.5",
    "@babel/plugin-transform-react-jsx": "^7.14.9",
    "@babel/preset-env": "^7.15.0",
    "@babel/preset-react": "^7.14.5",
    "@rails/webpacker": "5.4.0",
    "@types/react": "^17.0.18",
    "@types/react-dom": "^17.0.9",
    "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
    "prop-types": "^15.7.2",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react_ujs": "^2.6.1",
    "webpack": "^4.46.0",
    "webpack-cli": "^3.3.12"
  },
  "devDependencies": {
    "webpack-dev-server": "^3.11.2"
  }
}

修改完成后提交代码,重新推送至 Heroku 触发部署即可。

方案2:修改 Heroku 安装策略

如果不需要精简生产环境依赖,可直接配置环境变量让 Heroku 安装全部依赖:

  • 本地运行 Heroku CLI 命令:heroku config:set NPM_CONFIG_PRODUCTION=false YARN_PRODUCTION=false
  • 重新推送代码触发部署即可
验证方法

部署完成后可执行 heroku run bash 进入应用实例,运行 npm list @babel/preset-react 确认模块已正常安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:48:03