首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 7如何在操作视图/部分布局中导入固定的js模块?

Rails 7如何在操作视图/部分布局中导入固定的js模块?
EN

Stack Overflow用户
提问于 2022-02-07 09:41:00
回答 1查看 285关注 0票数 0

我试图在操作视图中导入固定的js模块,但是得到了与es-module-shims相关的错误。

代码语言:javascript
运行
复制
# config/importmap.rb
...
pin_all_from "app/javascript/zzz", under: "zzz"


# layouts/application.html.erb
...
<%= javascript_importmap_tags %>


# zzz/show.html.erb
...
<%= javascript_importmap_tags("zzz") %>
...

然后,当加载“显示操作”页面时,有时会出现以下错误:

代码语言:javascript
运行
复制
Error: Unable to resolve specifier 'application' from ... es-module-shims.js:769 

Error: Unable to resolve specifier 'zzz' from ... es-module-shims.js:769 

看起来异步加载es-module-shims.js文件被破坏了。如果我换到javascript_importmap_tags("zzz", shim: false),就可以了,但是我们需要es-module-shims来支持非铬浏览器,对吗?

那么,我如何在操作视图(或部分布局)中导入固定的js模块?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-02-07 12:23:17

根据标签方法代码,该方法将设置使用导入地图驱动的入口点(默认为application.js)所需的所有脚本标记,其中包括es-module-shims.js加载脚本,因此如果我在操作视图上再次调用它,就会有重复的脚本,这会导致不稳定的加载es-module-shims.js

代码语言:javascript
运行
复制
# https://github.com/rails/importmap-rails../importmap_tags_helper.rb
  def javascript_importmap_tags(entry_point = "application", shim: true)
    safe_join [
      javascript_inline_importmap_tag,
      javascript_importmap_module_preload_tags,
      (javascript_importmap_shim_nonce_configuration_tag if shim),
      (javascript_importmap_shim_tag if shim),
      javascript_import_module_tag(entry_point)
    ].compact, "\n"
  end

实际上,我只需要调用方法javascript_import_module_tag,它将生成一个脚本导入我的模块:

代码语言:javascript
运行
复制
# layouts/application.html.erb
...
<%= javascript_importmap_tags %> # Set up needed script and import `application`


# zzz/show.html.erb
...
<%= javascript_import_module_tag("zzz") %> # only import `zzz` module

现在我不再加载es-module-shims.js错误了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71016364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档