Angular 8 ng-build使用Cordova抛出MIME错误

Nid*_*eph 18 angular-cli angular ng-build angular8

在执行ng build --prod --base-href ./来构建我的cordova应用程序时,最终输出将引发如下错误。

无法加载模块脚本:服务器以非JavaScript MIME类型“”响应。根据HTML规范对模块脚本强制执行严格的MIME类型检查。

我最终通过将类型模块更改为text / javascript来解决此问题

src =“ runtime-es2015.858f8dd898b75fe86926.js” type =“ module”>

src =“ runtime-es2015.858f8dd898b75fe86926.js” type =“ text / javascript”>

在angular.json文件中是否可以解决某些问题,还是我在这里错过了什么?

eng*_*ete 9

我遇到过同样的问题。

  1. 创建了一个新项目。
  2. 构建了生产版本

      "build-production": "ng build --configuration=production --extract-css=false --prod --aot"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 部署到NGINX

  4. 白页,Chrome元素检查器中的标签之间没有内容

固定

更新tsconfig.json

        "target": "es5",
Run Code Online (Sandbox Code Playgroud)

然后重建应用程序并再次部署。

该解决方案为我工作,现在我已部署的应用程序中包含内容。

希望对别人有帮助

  • 这不是解决方案,而是解决方法。ES5 是遗留的。 (19认同)

Ame*_*had 7

您必须将文件“tsconfig.json”中的属性“target”更改为“es5”。阅读这篇博客文章“默认的差异加载”:

https://blog.angular.io/version-8-of-angular-smaller-bundles-cli-apis-and-alignment-with-the-ecosystem-af0261112a27

此属性根据浏览器功能在现代 JavaScript 或旧版 JavaScript 之间进行选择:

<script type="module" src="…"> // 现代JS

<script nomodule src="…"> // 传统 JS

  • 虽然这在技术上解决了错误,但它在质量上相当于说“只是不要使用角度 8”。这不是我们大多数人正在寻找的答案。 (11认同)

小智 6

创建角度/电子应用程序时,我也遇到同样的问题(类似)。

我在这里按照以下步骤操作:

https://alligator.io/angular/electron/

当我运行电子应用程序时,我只是得到一个空白屏幕(白色)。使用开发工具检查应用程序时,在控制台中会收到一些错误消息,例如:

无法加载模块脚本:服务器以非JavaScript MIME类型“”响应。根据HTML规范对模块脚本强制执行严格的MIME类型检查。

这些出现在dist / index.html文件中存在的所有JS包含文件中。

我必须手动浏览所有脚本标签(像这样):

<script src="runtime-es2015.858f8dd898b75fe86926.js" type="module">
Run Code Online (Sandbox Code Playgroud)

并更改它们以包括mime类型:

<script src="runtime-es2015.858f8dd898b75fe86926.js" type="text/javascript">
Run Code Online (Sandbox Code Playgroud)

只有这样,它才能在电子窗口内工作。但是,如果我使用“ ng serve”运行项目,并查看由angular提供的网页,那么它就可以正常工作。

我认为这与从文件系统本地加载文件而不提供mime类型有关,而从网络服务器提供文件时,会提供mime类型。