我试图在操作视图中导入固定的js模块,但是得到了与es-module-shims
相关的错误。
# 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") %>
...
然后,当加载“显示操作”页面时,有时会出现以下错误:
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模块?
谢谢!
发布于 2022-02-07 04:23:17
根据标签方法代码,该方法将设置使用导入地图驱动的入口点(默认为application.js)所需的所有脚本标记,其中包括es-module-shims.js
加载脚本,因此如果我在操作视图上再次调用它,就会有重复的脚本,这会导致不稳定的加载es-module-shims.js
。
# 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
,它将生成一个脚本导入我的模块:
# 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
错误了。
https://stackoverflow.com/questions/71016364
复制