该脚本具有不受支持的 MIME 类型 ('text/html')
Posted
技术标签:
【中文标题】该脚本具有不受支持的 MIME 类型 (\'text/html\')【英文标题】:The script has an unsupported MIME type ('text/html')该脚本具有不受支持的 MIME 类型 ('text/html') 【发布时间】:2021-06-12 22:04:16 【问题描述】:我正在尝试为 Flutter Web 平台设置 Firebase Push。
我复制了与各种教程中显示的相同的设置并遇到以下错误,
Uncaught (in promise) Error: [firebase_messaging/failed-service-worker-registration] Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker for scope ('http://localhost:61027/firebase-cloud-messaging-push-scope') with script ('http://localhost:61027/firebase-messaging-sw.js'): The script has an unsupported MIME type ('text/html')
这是我的 Index.html 的摘录
<script>
if ('serviceWorker' in navigator)
window.addEventListener('flutter-first-frame', function ()
navigator.serviceWorker.register('/flutter_service_worker.js')
.then(function(registration)
// Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
, function(err)
// registration failed :(
console.log('ServiceWorker registration failed: ', err);
)
);
</script>
<script src="main.dart.js" type="application/javascript"></script>
Index.html 和 flutter_service_worker.js 在同一个文件夹中。
我收到了成功的服务注册消息。收到推送权限后,我正在使用以下代码使用以下代码获取令牌,然后出现错误。
getIt<FirebaseMessaging>().getToken(vapidKey:"xxx");
我遇到了上述错误。
任何帮助或指导将不胜感激。
【问题讨论】:
【参考方案1】:messaging.useServiceWorker(registration); 是解决此问题的唯一方法。
我从 Another *** Question 找到了解决方案,但是 cmets 说 useServiceWorker 已被弃用,这就是我不倾向于使用它的原因,但我没有看到任何其他选项可以解决这个问题时刻。 这是我的完整注册信息。
const messaging = firebase.messaging();
navigator.serviceWorker.register('/firebase-message-sw.js')
.then(function (registration)
// Registration was successful
console.log('firebase-message-sw :ServiceWorker registration successful with scope: ', registration.scope);
messaging.useServiceWorker(registration);
, function (err)
// registration failed :(
console.log('firebase-message-sw: ServiceWorker registration failed: ', err);
);
);
【讨论】:
in index.html inside body -> script 标签。 我把这段代码放在哪里?【参考方案2】:将您的firebase-messaging-sw.js
放在 index.html 所在的根目录中,并确保
你的``firebase-messaging-sw.js 是空的,它不包含任何代码
这适用于 Firestore v9
【讨论】:
以上是关于该脚本具有不受支持的 MIME 类型 ('text/html')的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript 上的 Firebase FCM:“脚本具有不受支持的 MIME 类型('text/html')
Flutter 无法使用脚本为范围注册 ServiceWorker,该脚本具有不受支持的 MIME 类型
ionic/angular2 - 拒绝应用来自 'http://localhost:8100/build/main.css' 的样式,因为它的 MIME 类型('text/html')不受支持
Firebase - getToken() 抛出不受支持的 MIME 类型
“拒绝应用来自 link 的样式,因为它的 MIME 类型不受支持且已启用严格的 MIME checkinis。”在 Vue+Vuetify 应用中