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

Rails 5.2部署Heroku遇LoadError:缺失coffee_script,求移除方案

解决Heroku部署时LoadError: cannot load such file -- coffee_script问题

首先,咱们先理清楚为什么本地/CI没问题但Heroku炸了——大概率是依赖链或者部署环境的配置差异导致的,下面一步步排查解决:

1. 定位coffee_script的依赖来源

先搞清楚到底是哪个gem在偷偷依赖coffee_script,在本地跑这个命令:

bundle dependency coffee_script

这会列出所有直接/间接依赖它的gem。如果是某个第三方gem引入的,你可以看看有没有该gem的更新版本已经移除了coffee依赖;如果是Rails本身的默认依赖,那咱们继续往下走。

2. 清理Gemfile和相关配置

  • 先检查你的Gemfile,如果有gem 'coffee-rails'或者gem 'coffee_script',直接删掉这一行。
  • 打开config/application.rb或者config/initializers/assets.rb,看看有没有类似require 'coffee_script'或者Rails.application.config.assets.register_engine '.coffee', CoffeeScript::Rails::Template这样的配置,全部移除。
  • 再检查app/assets/javascripts/application.js,如果有//= require coffee_script或者//= require_tree .(如果目录里还有.coffee文件的话),要么删掉引用,要么把所有.coffee文件转成.js/.jsx文件(既然你想彻底移除coffee)。

3. 重新生成Gemfile.lock并提交

本地环境下执行:

rm Gemfile.lock
bundle install

这会重新生成干净的依赖锁文件,确保没有残留的coffee相关依赖。然后把新的Gemfile.lock提交到Git仓库,再重新部署到Heroku。

4. 检查Heroku的部署配置

  • 登录Heroku控制台,看看你的应用有没有添加额外的CoffeeScript相关buildpack,如果有的话直接移除。
  • 检查Heroku的环境变量,有没有设置BUNDLE_WITHOUT?如果设置了比如development:test,那生产环境的依赖应该是全装的,但如果有奇怪的配置,可能导致依赖缺失,建议重置成默认值:
    heroku config:unset BUNDLE_WITHOUT
    
  • 最后,部署前可以先清空Heroku的缓存,避免旧依赖残留:
    heroku repo:purge_cache -a your-app-name
    
    然后再重新部署。

5. 额外排查:ActiveStorage相关依赖

你提到用了ActiveStorage,虽然Rails 5.2的ActiveStorage本身不依赖coffee,但如果你的应用里有自定义的ActiveStorage相关JS(比如上传组件),可能不小心引入了coffee代码,记得把这些也转成纯JS。

如果走完这些步骤还是有问题,你可以把bundle dependency coffee_script的输出贴出来,这样能更精准定位问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:16:18