当前位置: 首页 > 知识库问答 >
问题:

Angular/Cordova:android设备上的MIME类型问题

戎高爽
2023-03-14

我创建了一个Cordova应用程序,在创建一个新项目时,它只提供默认的Angular欢迎页面。它在浏览器中运行良好。当通过Android Studio在模拟器上运行时,它运行良好。

当我在android设备上运行它时,会得到一个空白页面,控制台中会出现以下错误:

polyfills-es2015.5728f680576ca47e99fe.js:1 Failed to load module script: The 
server responded with a non-JavaScript MIME type of "". Strict MIME type 
checking is enforced for module scripts per 
HTML spec.

main-es2015.734c1bff4ed0a6bbbd29.js:1 Failed to load module script: The 
server responded with a non-JavaScript MIME type of "". Strict MIME type 
checking is enforced for module scripts per HTML spec.

我可以通过编辑dist来修复此问题/

<script src="runtime-es2015.858f8dd898b75fe86926.js" type="module"></script>
<script src="polyfills-es2015.5728f680576ca47e99fe.js" type="module"></script>
<script src="runtime-es5.741402d1d47331ce975c.js" nomodule></script>
<script src="polyfills-es5.7f43b971448d2fb49202.js" nomodule></script>
<script src="main-es2015.734c1bff4ed0a6bbbd29.js" type="module"></script>
<script src="main-es5.43ecaae92d6e77bfb1c5.js" nomodule></script>

如果我将其更改为,应用程序将在我的设备上正确运行。

如何告诉Cordova在提供javascript文件时包含正确的MIME类型头?

共有2个答案

解河
2023-03-14

可以通过在编译前定义一个运行shell脚本的钩子来修复资产:

sed -i 's/original/new/g' ./platforms/android/assets/index.html

这些正则表达式可能应该与原始的nomodule和type=“module”匹配。

郭兴平
2023-03-14

您可以更新您的tsconfig。angular项目中的json:

"target": "es5",

如果不想更改tsconfig中的目标,可以使用before\u prepare hook file替换索引中的内容。html

在文件夹挂钩中添加新文件夹并将其命名为“before\u prepare”。。。在before\u prepare文件夹中添加新的js文件并将其命名为“01\u switch\u configuration.js”

#!/usr/bin/env node

var fs = require('fs');
var path = require('path');

var rootdir = process.argv[2];

function replace_string_in_file(filename, to_replace, replace_with) {
    var data = fs.readFileSync(filename, 'utf8');
    var result = data.replace(new RegExp(to_replace, "g"), replace_with);
    fs.writeFileSync(filename, result, 'utf8');
}
if (rootdir) {
    var filestoreplace = ["www/index.html"];
    filestoreplace.forEach(function(val, index, array) {
        var fullfilename = path.join(rootdir, val);
        if (fs.existsSync(fullfilename)) {
            replace_string_in_file(fullfilename, 'type="module"', 'type="text/javascript"');
        } else {
            console.log("missing: " + fullfilename);
        }
    });
}
 类似资料:
  • 我正在使用symfony2中的类上载图像文件。我允许使用mime类型和的图像。当我从系统上传一个png文件到服务器时,它的mime类型会自动更改。我知道它改变了,因为当我发出这个命令: 它给了我这个: PHPUnit测试代码 我正在命令提示符下使用测试我的REST web服务文件上载,如下所示:

  • MIME(多用途Internet邮件扩展)类型告诉浏览器如何处理某些类型的文件。 当文件发送到您网站访问者的浏览器时,它也会发送该文件的MIME类型。 MIME类型告诉浏览器文件类型以及如何将文件提供给用户。 例如,如果将.js文件发送到浏览器,则还会发送application/JavaScript MIME类型以告知浏览器.js文件是JavaScript文件,浏览器会相应地处理该文件。 大多数M

  • 1.1.1. 设备类型 1.1.1. 设备类型 见 V2 协议设备类型

  • 最初设计MIME(多用途Internet邮件扩展)媒体类型,以便电子邮件可以包括除纯文本之外的信息。 MIME媒体类型表示以下内容 - 消息的不同部分(如文本和附件)如何组合到消息中。 指定消息的每个部分的方式。 编码不同项目以进行传输的方式,以便即使设计为仅使用ASCII文本的软件也可以处理该消息。 现在MIME类型不只是用于电子邮件; 它们已经被Web服务器采用,作为告诉Web浏览器向他们发送

  • 最近,谷歌搜索控制台报告了我们的ASP上的一个覆盖问题。NET网站上指向PDF文档的URL。 目前在我们的网站上。配置文件PDF文档没有任何MIME设置。但实际上,无论是在本地主机上还是在生产中,在Chrome中,在移动上下文中,PDF url都会生成带有消息的空内容,没有启用的插件支持这种MIME类型: 在桌面环境中,PDF文档直接在Chrome中打开。 更新web。在移动和桌面环境中,使用该配

  • 我正在尝试使用共享意图共享一个文件。如果我将“text/平原”设置为mime类型,它会像文本而不是文本文件一样读取内容,那么共享菜单中给出的选项是Whatsapp、Line等。 有人知道如何配置共享意图,使共享选项仅是能够发送<代码>的程序吗。txt文件(Gmail、Dropbox等,但不是Whatsapp等)?谢谢