当我尝试在 Rails 7.1.3 中配置 Actiontext 编辑器来处理嵌入的 YouTube 视频时,我目前遇到了一个问题。
当前运行 Rails 7.1.3、ruby 3.2.0 并使用 importmaps。
(遵循 Chris Oliver 的优秀示例https://www.youtube.com/watch?v=2iGBuLQ3S0c 这里有一个书面指南 - https://dev.to/superails/ruby-on-rails-embed-youtube-videos- with-actiontext-tldr-3m35 )
我收到此错误 - 未捕获的语法错误:请求的模块“trix”不提供名为“default”的导出(位于 youtube.js:1:8) 该错误是可以理解的,但我不知道如何修复它。
在我的 youtube.js 文件中,我像这样导入 trix。
import Trix from "trix"
import Rails from "@rails/ujs"
let lang = Trix.config.lang;
Trix.config.toolbar = {
getDefaultHTML: function() {
return `
<div class="trix-button-row">
.....
我尝试将其更改为但没有运气
import * as Trix from "trix"
当我查看 trix.js 时,我确实看到了一个导出:
export{Wn as default};
我的 importmap.rb 看起来像这样:
通过运行 ./bin/importmap 固定 npm 包
pin "application"
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
pin "@hotwired/stimulus", to: "stimulus.min.js"
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js"
pin_all_from "app/javascript/controllers", under: "controllers"
pin "@rails/actiontext", to: "actiontext.esm.js"
pin "@rails/ujs", to: "@rails--ujs.js" # @7.1.3
pin "trix" # @2.0.10
以前有人遇到过这个问题吗?也许找到了解决方案?
pin "trix"
链接到没有任何导出的 UMD 构建,它仅在全局范围内公开 Trix 。这意味着这import "trix"
就是您所需要的。此构建也适用于普通链轮:https://github.com/rails/rails/blob/main/actiontext/app/assets/javascripts/trix.js
另一方面,ESM 构建有一个默认导出:
https://cdn.jsdelivr.net/npm/ [email protected] /dist/trix.esm.js
如果您已
trix
单独固定到供应商目录(这将是 esm build),则它不会改变任何内容,因为供应商始终位于资产路径的末尾:这是我能想到的最好的修复顺序的方法:
将 pin 更改为 jspm url 也可以解决此问题,但是默认情况下 url pin 不再是
importmap-rails v2
,因此这是手动复制粘贴操作: