我有一个 Rails 应用程序,但我的自定义 JavaScript 不起作用。 在 Chrome 控制台中我可以看到以下错误:
触发模块脚本加载后添加导入映射。
未捕获的类型错误:无法解析模块说明符“应用程序”。相对引用必须以“/”、“./”或“../”开头。
未捕获的类型错误:无法解析模块说明符“@hotwired/turbo-rails”。相对引用必须以“/”、“./”或“../”开头。
我无法理解为什么会出现这些错误,我将导入映射移到了带有类型模块的脚本之前,但我仍然收到此错误。 在我的 application.html.erb 中我有
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_importmap_tags %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true, type: "module" %>
这是我的 importmap.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 文件:
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails"
import "controllers"
这是应用程序/javascript/cotrollers/application.js
import { Application } from "@hotwired/stimulus"
const application = Application.start()
// Configure Stimulus development experience
application.debug = false
window.Stimulus = application
export { application }
这是app/assets/javascripts/application.js的内容
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .
我在 app/assets/javascripts/ 文件夹中看不到自定义 javascript。 我缺少什么?谢谢
当我的代码中有剩余的
<%= javascript_include_tag("turbo", type: "module") %>
指令时,我遇到了同样的问题。