Ошибка сообщения сервис-воркера

Имею следующее:

//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: невозможно прочитать свойство postMessage со значением null

Почему это происходит?


person Kento Nishi    schedule 11.07.2018    source источник
comment
проверьте worker.active.postMessage   -  person Drag13    schedule 11.07.2018
comment
worker.active.postMessage сработал!   -  person Kento Nishi    schedule 11.07.2018
comment
Приятно слышать, удачи   -  person Drag13    schedule 11.07.2018


Ответы (1)


Это потому, что вы входите в новую функцию со строкой

navigator.serviceWorker.register('worker.js').then(function(worker){

и передать вашего сервис-воркера как "worker"

вы сможете заменить

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

с участием

 worker.active.postMessage('your message');
person Benbentwo    schedule 11.07.2018
comment
Нет такой удачи. navigator.serviceWorker.register ('worker.js'). then (функция (работник) {worker.postMessage (uid);}); - person Kento Nishi; 11.07.2018
comment
Возвраты: Непойманный (в обещании) TypeError: worker.postMessage не является функцией - person Kento Nishi; 11.07.2018
comment
Смена рабочего. postMessage на worker.active.postMessage в ответе, и я его приму! - person Kento Nishi; 11.07.2018