Service Worker PostMessage 错误

Service Worker PostMessage Error

我有以下内容:

//main.js
if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('worker.js').then(function(worker){
//      firebase.messaging().useServiceWorker(worker);
    navigator.serviceWorker.controller.postMessage([MESSAGE HERE]);
    });
}

在worker.js中:

self.onmessage=function(e){
    console.log(e.data);
}

但在 main.js 中,我收到此错误:

Uncaught TypeError: Cannot read property 'postMessage' of null

为什么会这样?

这是因为您要使用

行进入一个新函数
navigator.serviceWorker.register('worker.js').then(function(worker){

并将您的服务人员作为 'worker'

传递

你应该可以替换

    navigator.serviceWorker.controller.postMessage([MESSAGE HERE]);

 worker.active.postMessage('your message');