Uncaught TypeError : self.showLocalNotificationWrap is not a function

Uncaught TypeError : self.showLocalNotificationWrap is not a function

所以我尝试使用网络推送发送通知,但它不起作用。 我看到事件已收到,但没有显示通知。

这是我的 Service Worker 中 'push' 事件的代码:

self.addEventListener('push', async (event) => {
    console.log("Push received data - ", event.data.text());
    const pushData = await event.data.text();
    let data, title, body;
    try{
      data = await JSON.parse(pushData);
      title = data.title;
      body = data.body;
    }catch(e){
      title = "untitled";
      body = pushData;
    }
    
    const options = {
      title : title,
      body : body, 
      icon : '/favicon.ico',
    }

    self.showLocalNotificationSW(title, body, self.registration);

})

并且 showLocalNotificationSw 推送事件调用:

const showLocalNotificationSW = async (title, body, swRegistration) => {
    swRegistration.showNotification(title, options);
}

我在控制台中看到它说 self.showNotificationWrap 不是控制台中的函数。 这是什么意思?

我没有任何名为 showNotificationWrap 的函数。

错误:

sw.js:48 Uncaught TypeError: self.showLocalNotificationWrap is not a function
    at sw.js:48

我该如何解决这个问题?

我该如何解决这个问题?

原来我只需要注销并重新注册 service worker 就可以解决问题。

修改后的推送事件代码如下:

self.addEventListener('push', async function received(event) {
  let data, title, body;  
  data = event.data.text();
  console.log("Push received event - " + data);

    try{
      data = JSON.parse(data);
      console.log(JSON.stringify(data));
      title = data.title;
      body = data.body;
    }catch(error){
      console.error(error);
      title = "Undefined";
      body = data;
    }

    event.waitUntil(showNotificationSW(title, body, self.registration));

})