ruby-on-rails 在Rails 7中无法使用导入Map导入自定义JavaScript文件

iugsix8n  于 2023-01-22  发布在  Ruby
关注(0)|答案(1)|浏览(197)

我正在尝试学习Rails 7和导入Map,我正在学习DHH的这个教程:https://www.youtube.com/watch?v=PtxZvFnL2i0
这段视频大约有一年的历史了,基于Rails 7的alpha版本,但它在一定程度上是有效的,现在我正处于这个阶段,努力找出哪些地方已经改变了,哪些地方需要改变。
直到17:18,他才将Vue.js添加到演示中。这是他第一次将自定义的JS文件添加到应用程序中,而不是导入库。在教程中,他将以下代码行添加到application. js中:

import "comps/vue_components"

该行在我的实现中失败,并出现以下JS错误:
未捕获的类型错误:解析模块说明符"comps/vue_components"失败。相对引用必须以"/"、."/"或.."/"开头。
我尝试将该行更新为以下内容以解决错误:

import "./comps/vue_components"

但这只是默默地失败了。看起来它完全扼杀了javascript的执行-如果我在application.js中放入一条console.log语句,只有当我省略或注解掉导入vue组件的行时,它才会显示在控制台中。
下面是我的config/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"

pin "trix"
pin "@rails/actiontext", to: "actiontext.js"

pin "md5", to: "https://cdn.skypack.dev/md5"

pin "vue", to: "https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.esm.browser.js"

pin_all_from "app/javascript/components", under: "comps"

这是我的application.js文件:

// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails"
import "controllers"
import "trix"
import "@rails/actiontext"
import "./comps/vue_components"
console.log('hello')

git项目位于:https://github.com/fredwillmore/showntell

iih3973s

iih3973s1#

那个视频不是教程,"alpha预览"是它标题中的意思。你应该找到一些最新的东西,从那以后发生了很多变化。但是要解决你的问题,请这样做:

pin_all_from "app/javascript/components", under: "comps", to: "components"
    • 不要**使用相对导入。不要预编译。我有更详细的答案:
  • 一个月一次 *

你应该把你的ruby升级到最新版本,不要用2.7.2开始任何新的东西。

相关问题