Vue.js 如何跳过Vue PWA中的等待服务工作人员

Vue.js 如何跳过Vue PWA中的等待服务工作人员,vue.js,progressive-web-apps,service-worker,skip,Vue.js,Progressive Web Apps,Service Worker,Skip,我为我的PWA使用VUE PWA服务工作者插件 如果存在新的服务人员,我想运行新的服务人员,但不知道如何将其包含在我的代码中。 目前,当前的服务人员在24小时后甚至没有更新。仅当用户关闭浏览器并清除缓存时。但那当然不是我想要的 那么,如何实现skipWaiting() 这是我的registerServiceWorker.js import { register } from 'register-service-worker' if (process.env.NODE_ENV === 'prod

我为我的PWA使用VUE PWA服务工作者插件

如果存在新的服务人员,我想运行新的服务人员,但不知道如何将其包含在我的代码中。 目前,当前的服务人员在24小时后甚至没有更新。仅当用户关闭浏览器并清除缓存时。但那当然不是我想要的

那么,如何实现skipWaiting()

这是我的registerServiceWorker.js

import { register } from 'register-service-worker'

if (process.env.NODE_ENV === 'production') {
     register(`${process.env.BASE_URL}service-worker.js`, {
          ready() {
               console.log(
                    'App is being served from cache by a service worker.\n' +
                         'For more details, visit '
               )
          },
          registered() {
               console.log('Service worker has been registered.')
          },
          cached() {
               console.log('Content has been cached for offline use.')
          },
          updatefound() {
               console.log('New content is downloading.')
          },
          updated(registration) {
               console.log('New content is available; please refresh.')
               document.dispatchEvent(
                    new CustomEvent('swUpdated', { detail: registration })
               )
          },
          offline() {
               console.log(
                    'No internet connection found. App is running in offline mode.'
               )
          },
          error(error) {
               console.error('Error during service worker registration:', error)
          },
     })
}
更新部件中的代码至少会生成等待激活的代码


解决方案,无需修改
service worker.js
文件

在您的
registerServiceWorker.js
文件中,修改
updated
函数,以使用代码向默认服务人员发送消息

更新(注册){
registration.waiting.postMessage({type:'SKIP_waiting'})
}

修改了
服务工作者.js
文件的解决方案

在自定义的
service worker.js
文件中,添加一个带有代码的侦听器

self.addEventListener('install',()=>self.skipWaiting())

解决方案,无需修改
service worker.js
文件

在您的
registerServiceWorker.js
文件中,修改
updated
函数,以使用代码向默认服务人员发送消息

更新(注册){
registration.waiting.postMessage({type:'SKIP_waiting'})
}

修改了
服务工作者.js
文件的解决方案

在自定义的
service worker.js
文件中,添加一个带有代码的侦听器

self.addEventListener('install',()=>self.skipWaiting())

service worker仅在您更改service worker中至少1个字节后更新(例如重命名service worker缓存)。只有当您关闭浏览器中的每个会话时,他才会更新。用“会话”的说法,@lfaruki表示所有打开站点的选项卡和窗口。只有在您至少更改了服务工作者中的1个字节后,服务工作者才会更新(例如,重命名服务工作者缓存)。只有当你关闭浏览器中的每一个会话时,他才会更新。所谓的会话,@lfaruki是指所有打开站点的选项卡和窗口