未捕获的FirebaseError:消息:此方法在Window上下文中可用

Kim*_* Ho 4 javascript push-notification web firebase firebase-cloud-messaging

我正在使用Firebase服务工作程序进行Web推送通知.目前,我正面临这样的错误:

Uncaught FirebaseError: Messaging: This method is available in a Window context. (messaging/only-available-in-window).
Run Code Online (Sandbox Code Playgroud)

我在桌面上使用网站注册SW.我该如何解决这个问题?

错误堆栈我进入控制台.

browserErrorMessage: "Failed to register a ServiceWorker: ServiceWorker script evaluation failed"
code :"messaging/failed-serviceworker-registration"
message :"Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker: ServiceWorker script evaluation failed (messaging/failed-serviceworker-registration)."
stack: "FirebaseError: Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker: ServiceWorker script evaluation failed (messaging/failed-serviceworker-registration).?    at https://www.gstatic.com/firebasejs/3.7.0/firebase.js:555:225"
__proto__: Error
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 6

这个方法应该在主javascript文件中,而不是在service worker中.服务工作者在后台工作.

    messaging.onMessage(function(payload) {
      console.log("Message received. ", payload);
      // ...
    });
Run Code Online (Sandbox Code Playgroud)


小智 -1

发生这种情况是因为您可能在服务工作线程文件(firebase-messaging-sw.js) const communications = firebase.messaging(); 中添加了以下代码

删除它并查看代码是否有效。

上面的行应该只添加到index.html 中。