Rails7升级后importmap-rails+sprockets无法找到stimulus-loading.js
解决 Stimulus-Loading.js 404 错误的方案
1. 重新执行 Stimulus 安装器
先确保所有必要文件和配置都正确生成,重新运行安装命令:
rails stimulus:install
执行后检查 config/importmap.rb,确认以下配置存在:
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true pin_all_from "app/javascript/controllers", under: "controllers"
2. 配置 Sprockets 资产路径
编辑 config/initializers/assets.rb,添加 JavaScript 目录到资产路径:
Rails.application.config.assets.paths << Rails.root.join("app/javascript")
修改后必须重启服务器,让配置生效。
3. 手动生成 Stimulus-Loading.js 文件
如果安装器未自动生成,在 app/javascript 目录下创建 stimulus-loading.js,内容如下:
import { Application } from "@hotwired/stimulus" const application = Application.start() // 加载所有控制器 import controllers from "./controllers/**/*_controller.js" controllers.forEach((controller) => { application.register(controller.name, controller.default) })
4. 检查布局文件的加载标签
确认 app/views/layouts/application.html.erb 中使用 importmap 标准加载标签:
<%= javascript_importmap_tags %>
避免混用 javascript_pack_tag 等旧加载方式。
5. 清理并重新编译资产
执行完整的资产清理和预编译操作:
rails assets:clobber rails assets:precompile
完成后重启服务器,再次访问 http://localhost:3000/assets/stimulus-loading.js 验证是否正常返回内容。
6. 确认开发环境配置
检查 config/environments/development.rb 中的资产相关设置:
config.assets.compile = true config.public_file_server.enabled = true
确保开发环境下资产可动态编译,且静态文件服务启用。
内容的提问来源于stack exchange,提问作者nimmolo
相关产品推荐
相关产品推荐

