【问题标题】:Old service-worker.js not being update by new sw.js file旧的 service-worker.js 没有被新的 sw.js 文件更新
【发布时间】:2019-10-09 06:25:21
【问题描述】:

一个旧站点有一个名为 service-worker.js 的服务工作者,现在我正在使用 GatsbyJS gatsby-plugin-offline 并自动创建一个 sw.js。问题是新的 sw.js 不会更新网站,它会安装但不会取代旧的。

有没有办法解决这个问题?

我读到了 self.skipWaiting(),但 Gatsby 插件已经使用了 skipWaiting()。

【问题讨论】:

  • 你怎么知道它没有代替旧的? “新的 sw.js 不会更新网站”是什么意思?
  • 在开发工具中,它显示正在安装,但不要代替旧的 service-worker.js 文件。不过我找到了解决办法,我会在下面发帖

标签: service-worker gatsby


【解决方案1】:

我找到了这个答案https://stackoverflow.com/a/49772107/2517560的解决方案

将此代码添加到 gatsby-browser.js

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.getRegistrations()
        .then(function(registrations) {
            for(let registration of registrations) {
               if(registration.active.scriptURL == 'http://localhost/my-push/myworker.js'){ registration.unregister(); }
            }
        });
}

注销service-worker.js文件,sw.js文件现在是唯一的了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2019-12-12
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多