ruby-on-rails 未捕获的错误:无法找到模块"@hotwired/turbo-rails "

5us2dqdw  于 2023-02-10  发布在  Ruby
关注(0)|答案(1)|浏览(141)

我正在使用shakapacker https://github.com/reactjs/react-rails,我遇到了这个错误,尽管遵循了shakapacker入门部分的所有步骤,我不知道为什么会发生这种情况,任何帮助都是感激的
配置/导入Map. rb

# Pin npm packages by running ./bin/importmap

pin "application", preload: true
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
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"

app/javascript/application.js

import "@hotwired/turbo-rails" 
import "controllers"

误差图像

c86crjj0

c86crjj01#

您混淆了概念。ShakapackerImport Maps是构建前端的两种不同方法。

  • Shakapacker:它基于webpack,因此您运行的是一个带有编译/移植步骤的Node.js捆绑器。依赖项在package.json中定义。
  • Import Maps:基于ESM,所以它直接在浏览器中运行,没有绑定步骤。这是新的Rails 7+默认设置。

所以首先,你需要选择一个选项来构建你的前端代码(你可以混合使用这两个选项,但是如果你不清楚它们是如何工作的,那就太麻烦了)。如果你只需要“Hotwire”而不想要任何复杂的东西(三次震动,热重载,...),importmap-rails解决方案更简单,也是推荐的方法。
还有第三个选项(我的🙋‍雄性️更喜欢的一个):https://github.com/rails/jsbundling-rails。使用js bundler(esbuild、webpack或rollup)并依靠Rails资产管道(Sprockets)将插件插入应用程序是一个小的层/粘合代码。如果您想看一个这样的示例,前一段时间我发布了一个现成的模板:https://github.com/ralixjs/rails-ralix-tailwind .

相关问题