代码之家  ›  专栏  ›  技术社区  ›  Kento Nishi

服务工作线程后消息错误

  •  1
  • Kento Nishi  · 技术社区  · 6 年前

    我有以下几点:

    //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中,我得到了这个错误:

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

    为什么会这样?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Kento Nishi    6 年前

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

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

    把你的服务人员作为“工人”传进来

    你应该能够替换

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

    具有

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