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

Rails+React部署Heroku时Precompiling assets failed错误如何解决

问题根因排查与解决方案

1. 修复sourcemap配置冲突

你的报错截断在sourceMappingURL的位置,结合.gitignore忽略了bundle.js.map的配置,本质是生产环境webpack仍在尝试生成/关联sourcemap,但文件被忽略导致资产编译链路断裂。
解决操作:

  • 打开webpack生产环境配置文件(一般是config/webpack/production.js),关闭sourcemap生成:
// 新增或修改配置
module.exports = {
  // 其他现有配置
  devtool: false
}
  • 如果使用webpacker旧版本,修改config/webpacker.yml中production块的配置:
production:
  # 其他配置
  devtool: 'none'
  extract_css: true

2. 修正构建包依赖安装逻辑

虽然你已经把nodejs构建包放在ruby之前,但是默认ruby构建包执行资产预编译时,不会自动安装前端依赖,需要补全配置:

  • 确保项目根目录的package.json中存在heroku-postbuild脚本,触发正确的打包逻辑:
{
  "scripts": {
    "build": "webpack --mode production",
    "heroku-postbuild": "npm run build"
  }
}

如果使用yarn作为包管理器,把npm改成yarn即可。

  • 清理本地残留的预编译缓存,避免把错误的本地文件推送到Heroku:
bundle exec rake assets:clobber
rm -rf node_modules tmp/cache

3. 验证修复效果

先本地执行生产环境预编译,确认没有报错再推送到Heroku:

RAILS_ENV=production bundle exec rake assets:precompile

如果执行成功没有报错,再提交代码到Heroku即可。

4. 兜底排查方案

如果还是报错,执行预编译命令时加上--trace参数,拿到完整报错信息定位具体问题:

bundle exec rake assets:precompile RAILS_ENV=production --trace

重点看截断位置之前的红色报错内容,一般会明确指出是哪个依赖、哪个语法不兼容导致的打包失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:06:03