导入地图+刺激:JS“未知内容类型文本/html”中的错误

Posted

技术标签:

【中文标题】导入地图+刺激:JS“未知内容类型文本/html”中的错误【英文标题】:Import maps + Stimulus: error in JS "Unknown Content-Type text/html" 【发布时间】:2021-12-02 22:10:26 【问题描述】:

我的第一个 Rails 应用程序出现 JS 问题,我怀疑这与我使用导入映射而不是 Webpack 有关。我已经搜索和搜索,但没有找到任何关于此的讨论。

这是一个 Rails 6 应用程序,带有一些通过 Stimulus 的 JS,我通过添加 importmap-railsstimulus-rails 来安装它。它在本地运行良好,但在 Heroku 的生产环境中,JS 无法运行,我在浏览器控制台中看到类似这样的错误:Uncaught (in promise) Error: Unknown Content-Type "text/html; charset=utf-8" doFetch https://plainreading.herokuapp.com/assets/es-module-shims-424762490b07cc7f9a37745e8b53356bca11997a8e313f47d780e29009df7e8e.js:580

我想知道是不是因为我使用 How to completely remove webpack and all its dependencies from Rails App 从我的应用程序中删除了 Webpack。我删除了它,因为我在 Heroku 中遇到了与 Webpack 相关的构建错误,而且我的理解是,如果我使用导入映射,我不需要 Webpack。

不久前,我通过在其netlify.toml 配置中包含此问题,在 Netlify 上的一个静态站点中修复了一个类似问题:

[[headers]]
  for = "/*.js"
  [headers.values]
    Content-Type = "text/javascript; charset=utf-8"

我找不到任何类似的 Heroku 配置。因此,我尝试在应用程序中自定义响应标头,但我找不到为我的 JS 文件执行此操作的方法,仅针对主要 HTML 响应和公共资产。

如果有帮助,这里是回购:https://github.com/fpsvogel/plainreading

【问题讨论】:

【参考方案1】:

最后我通过以下方式解决了这个问题:

    安装 Rails 7 alpha。 使用导入映射创建一个测试项目:rails _7.0.0.alpha2_ new importmap-test。 (您可以使用-j 设置不同的JS 捆绑选项,例如-j esbuild,但默认为导入地图。) 将我的主要项目升级到 Rails 7 alpha。 在我的主项目中,使所有JS相关的代码与测试项目中的相应代码相同。对我来说,这意味着覆盖app/javascript/controllers/index.js

然后我的 JS 工作没有错误。

【讨论】:

以上是关于导入地图+刺激:JS“未知内容类型文本/html”中的错误的主要内容,如果未能解决你的问题,请参考以下文章

codevs1958 刺激

AC日记——刺激 codevs 1958

Echarts 中国地图(包括china.js文件)

Angular 6-从JS文件导入变量

Echarts地图使用json数据显示方法

echart导入js后y轴无法排序