Heroku Rails 7部署未找到Javascript文件(404)

3

我有一个Rails应用程序,在本地javascript正常工作,但是当我推送到Heroku时,我的application.js文件中的每个相对导入都会出现404错误:

// Simply importing activates Turbo Drive
import "@hotwired/turbo-rails";
import { Application } from "@hotwired/stimulus";

// Here we use relative imports so these aren't in import map
import HelloController from "./application/hello_controller";
import "./application/logstuff";
import "./application/main";

// Start Stimulus and register controllers
window.Stimulus = Application.start();
window.Stimulus.debug = false; // set true to enable stimulus debugging
Stimulus.register("hello", HelloController);

我将我的JavaScript代码放在了app/javascript文件夹中,但错误提示信息中显示该JavaScript代码为空,好像它本应该在app/assets/目录下。
GET <url>/assets/application/hello_controller net::ERR_ABORTED 404

我是否遗漏了某个配置项,以便切换查找JavaScript的位置?谢谢 :)

在 Heroku 部署期间,您是否看到 Heroku 正在预编译资源?您可以尝试在本地进行预编译:RAILS_ENV=production rails assets:precompile,然后将其推送到 Heroku,但之后您必须找出为什么 Heroku 未预编译资产。 - Maxence
嗨,感谢回复 - 在部署期间似乎确实编译正确。 - Becky Green
1个回答

1

我曾经遇到过类似的问题,通过更改我的app/javascript/controllers/index.js文件的内容来解决它:

import { application } from "controllers/application"
import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading"
eagerLoadControllersFrom("controllers", application)

更多信息请查看 -> https://github.com/hotwired/stimulus-rails/issues/87


1
谢谢 - 我在跟着教程运行rails stimulus:manifest:update的过程中,最后来到了这里,尽管应用在我的开发环境中工作正常,但它完全搞砸了我的Heroku部署。你的答案给了我线索,让我明白恢复index.js可以解决这个问题。+1并感谢。 - Nick Gobin
好的 - 你介意给我的回答点个赞吗?是的...我毫不羞耻地为赞助做宣传 - Buck3000
我已经翻译了,实际上你的回答在之前被投票为-1。唉。 - Nick Gobin
真是个遗憾 - 不过还是谢谢你的加一吧 - Buck3000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接