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

Rails 6部署Heroku时Precompiling assets failed报错求解

问题根因

你遇到的报错核心有两个原因:

  • Heroku 生产环境默认执行npm install --production,仅安装package.json中dependencies字段的依赖,你将webpack放在了devDependencies下,生产环境不会安装该依赖,因此触发webpack未找到的报错。
  • 你使用的@rails/webpacker 4.3.0版本仅兼容webpack 4,你安装的webpack 5版本存在适配冲突,也会导致编译失败。

解决步骤

  1. 调整webpack依赖范围并降级到兼容版本
    执行以下命令将webpack从开发依赖移动到生产依赖,同时降级到webpack 4的稳定版本:
npm uninstall --save-dev webpack webpack-dev-server
npm install --save webpack@4 webpack-cli

webpack-dev-server是本地开发调试工具,无需放到生产依赖中。

  1. 检查配置文件完整性
    确认你的config/webpack/environment.js文件末尾包含导出语句,你贴出的代码中该行脱离了代码块,避免因遗漏导出导致webpack加载失败:
module.exports = environment
  1. 本地验证生产编译
    在提交代码前先在本地执行生产环境资产预编译,提前排查问题:
RAILS_ENV=production bundle exec rails assets:precompile

如果本地执行无报错,再进行后续部署操作。

  1. 确认Heroku构建包顺序
    Heroku需要先安装Node.js依赖再编译Ruby项目资产,执行以下命令检查构建包顺序:
heroku buildpacks

如果返回结果中heroku/nodejs在heroku/ruby之后,执行以下命令调整顺序:

heroku buildpacks:add --index 1 heroku/nodejs
  1. 提交代码重新部署
    将修改后的package.json、package-lock.json文件提交到Git仓库,再推送到Heroku即可正常部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:06:03