服务人员PostMessage错误

时间:2018-07-11 17:44:29

标签: javascript worker

我有以下内容:

//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中,出现此错误:

  

未捕获的TypeError:无法读取null的属性'postMessage'

为什么会这样?

1 个答案:

答案 0 :(得分:4)

这是因为您将使用

行进入新功能
navigator.serviceWorker.register('worker.js').then(function(worker){

并以“工作人员”的身分将您的服务人员传递给我们

您应该可以替换

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

使用

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