javascript - Flutter 无法使用脚本为范围注册 ServiceWorker,该脚本具有不受支持的 MIME 类型

标签 javascript firebase flutter firebase-cloud-messaging

我有一个带有 FlutterFire 的功能齐全的 Flutter 应用程序,其中 android 包工作得很好,但是 Web 客户端在启动时会出现一个奇怪的错误。我也不能用它调用任何带有flutterfire的firebase函数。 (简单的firebase查询就可以了)
启动时或尝试调用 FirebaseFunctions.instance.httpsCallabe('... 时的错误消息:

:1337/dart_sdk.js:7025 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:1337/firebase-cloud-messaging-push-scope') with script ('http://localhost:1337/firebase-messaging-sw.js'): The script has an unsupported MIME type ('text/html'). .
    at Object.throw_ [as throw] (:1337/dart_sdk.js:5334)
    at firebase_messaging_web.FirebaseMessagingWeb.new.getToken (:1337/packages/firebase_messaging_web/firebase_messaging_web.dart.lib.js:112)
    at getToken.throw (<anonymous>)
    at :1337/dart_sdk.js:39038
    at _RootZone.runBinary (:1337/dart_sdk.js:38894)
    at _FutureListener.thenAwait.handleError (:1337/dart_sdk.js:33887)
    at handleError (:1337/dart_sdk.js:34451)
    at Function._propagateToListeners (:1337/dart_sdk.js:34477)
    at _Future.new.[_completeError] (:1337/dart_sdk.js:34323)
    at async._AsyncCallbackEntry.new.callback (:1337/dart_sdk.js:34362)
    at Object._microtaskLoop (:1337/dart_sdk.js:39176)
    at _startMicrotaskLoop (:1337/dart_sdk.js:39182)
    at :1337/dart_sdk.js:34689
我没有 firebase-messaging-sw.js 文件。我只做了文档推荐的 https://firebase.flutter.dev/docs/messaging/overview/#5-web-only-add-the-sdk .
我的 index.html:
<!DOCTYPE html>
<html>
<head>
...

  <!-- The core Firebase JS SDK is always required and must be listed first -->
  <script src="https://www.gstatic.com/firebasejs/7.20.0/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.20.0/firebase-auth.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.20.0/firebase-firestore.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.20.0/firebase-messaging.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.20.0/firebase-functions.js"></script>


  <script>
    // Your web app's Firebase configuration
    var firebaseConfig = {
      apiKey: "****",
      authDomain: "*****",
      databaseURL: "*****",
      projectId: "*****",
      storageBucket: "*****",
      messagingSenderId: "*****",
      appId: "*****"
    };
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
  </script>
</head>
<body>
<script >
  if ('serviceWorker' in navigator) {
    window.addEventListener('flutter-first-frame', function () {
      navigator.serviceWorker.register('flutter_service_worker.js');
    });
  }
</script>
  <script src="main.dart.js" type="application/javascript"></script>
</body>
</html>

flutter 医生:
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.3, on Linux, locale en_US.UTF-8)

最佳答案

找到解决方案:https://stackoverflow.com/a/63800226/3486691
我必须创建文件并提供默认设置,以便应用程序可以正常工作而不会引发错误。

关于javascript - Flutter 无法使用脚本为范围注册 ServiceWorker,该脚本具有不受支持的 MIME 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66867680/

相关文章:

firebase - flutter : Adding stream of comments 的 QnA 应用程序

javascript - Node 为数组中的空值分配多少内存

javascript - 是否可以在 IE6 中获取 DOM 选择元素的值?

firebase - 您如何在水平扩展的应用程序上管理 websockets?

javascript - Firebase 管理 SDK 无法在 Cloud Scheduler (PubSub) 上运行

flutter - 如何同时使用多种字体家族用于多种语言?

javascript - 从使用 JavaScript 创建的按钮获取 ID

javascript - 完全使用 stub 测试函数

firebase - 如何为 Firestore 中的不同字段组合创建索引?

xml - 如何在Flutter中将远程xml文件转换为字符串?