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

Rails 6.1执行hotwire:install提示JS入口文件导入缺失如何解决?

问题原因

这不是未被发现的新bug,是Rails版本与Hotwire安装脚本的默认路径适配问题:

  • Rails 6.1默认搭配Webpacker作为JS打包工具,约定的JS入口文件路径为app/javascript/packs/application.js
  • 后续版本的Hotwire安装脚本默认适配Rails 7+自带的jsbundling-rails打包方案,默认检测的入口路径为app/javascript/application.js,因此会出现路径不匹配的报错,且脚本不会自动将必要的导入规则写入你项目实际的入口文件,最终导致功能无法正常运行。
解决方法

直接手动修正入口文件内容即可,操作成本最低,步骤如下:

  1. 打开项目实际入口文件app/javascript/packs/application.js
  2. 删除原有的Turbolinks相关代码(Turbo已经替代Turbolinks,二者共存会出现冲突)
  3. 补充Hotwire所需的两行导入规则,修改后的完整内容参考如下:
// This file is automatically compiled by Webpack, along with any other files
// present in this directory. You're encouraged to place your actual application logic in
// a relevant structure within app/javascript and only use these pack files to reference
// that code so it'll be compiled.

import Rails from "@rails/ujs"
import * as ActiveStorage from "@rails/activestorage"
import "channels"
// 新增Hotwire相关导入
import "@hotwired/turbo-rails"
import "./controllers"

Rails.start()
ActiveStorage.start()
  1. 开发环境下重启Rails服务即可生效,无需重新执行rails hotwire:install命令。

如果希望后续Hotwire相关脚本可以自动识别入口路径,也可以修改Webpacker配置,将入口文件从packs目录迁移到app/javascript/application.js,并同步调整webpacker.yml中的source_entry_path配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:54:08