服务工作者 PostMessage 错误

Ken*_*shi 1 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]);
    });
}
Run Code Online (Sandbox Code Playgroud)

在 worker.js 中:

self.onmessage=function(e){
    console.log(e.data);
}
Run Code Online (Sandbox Code Playgroud)

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

未捕获的类型错误:无法读取 null 的属性“postMessage”

为什么会这样?

Ben*_*two 6

这是因为您将使用该行进入一个新函数

navigator.serviceWorker.register('worker.js').then(function(worker){
Run Code Online (Sandbox Code Playgroud)

并将您的服务人员传递为“工人”

你应该可以更换

    navigator.serviceWorker.controller.postMessage([MESSAGE HERE]);
Run Code Online (Sandbox Code Playgroud)

 worker.active.postMessage('your message');
Run Code Online (Sandbox Code Playgroud)