未捕获的 DOMException:无法在“WorkerGlobalScope”上执行“importScripts”

DEE*_*EEz 11 firebase angularfire firebase-cloud-messaging angular

我正在尝试从中导入脚本

importScripts("https://www.gstatic.com/firebasejs/9.1.0/firebase-app.js");
importScripts("https://www.gstatic.com/firebasejs/9.1.0/firebase-messaging.js");
Run Code Online (Sandbox Code Playgroud)

它用于 Firebase 云消息传递(FCM),但我不知道为什么 Angular 不喜欢在 ServiceWorker 上导入

它导入它(单击错误 URL 并获取脚本)但不知何故加载失败?

脚本已加载并查看

劳德

错误在这里:

Uncaught DOMException: Failed to execute 'importScripts' on 'WorkerGlobalScope': The script at 'https://www.gstatic.com/firebasejs/9.1.0/firebase-app.js' failed to load.
    at initInSw (http://localhost:4200/firebase-messaging-sw.js:35:1)
    at http://localhost:4200/firebase-messaging-sw.js:56:1
Run Code Online (Sandbox Code Playgroud)

角度.json

"assets": [
          "src/favicon.ico",
          "src/assets",
          "src/manifest.json",
          "src/firebase-messaging-sw.js"
        ],
Run Code Online (Sandbox Code Playgroud)

索引.html

  <link rel="manifest" href="/manifest.json">
Run Code Online (Sandbox Code Playgroud)

目录

文件目录

尝试使用 fireship 的实现https://www.youtube.com/watch?v=z27IroVNFLI&t=140s&ab_channel=Fireship但也不起作用(相同的实现只是不同的 firebase 版本),我也认为与此无关

我的理论是,我认为它确实没有加载,而我看到的是控制台请求?(因为文件名是(索引)意味着它没有文件名因此不存在?)

DEE*_*EEz 0

解决了半天后我发现它需要旧版本的 firebase (9.1.0 => 8.10)

angular.json所以我将Firebase 版本和 Service Worker 版本同步到 8.10,它成功了!

  • 如果有人解释 9.1.0 上发生了哪些脚本无法加载的重大更改,那就太好了 (4认同)