从根目录删除/serviceworker.js后,Chrome仍然运行我从webroot中删除的serviceworker。我如何从我的网站和Chrome卸载服务工作者,以便我可以登录回我的网站?

我已经将问题追溯到Service Work的缓存机制,现在我只想删除它,直到有时间调试它。我使用的登录脚本重定向到谷歌的服务器,让他们登录到他们的谷歌帐户。但是我从login.php页面得到的只是一条ERR_FAILED消息。


当前回答

你也可以去URL: chrome://serviceworker-internals/从那里注销一个serviceworker。

其他回答

你也可以去URL: chrome://serviceworker-internals/从那里注销一个serviceworker。

如果你的服务人员不让你更新文件。你需要用下面的代码替换serviceworker文件(sw.js / serviceworker .js):

self.addEventListener('install', function(e) {
  self.skipWaiting();
});

self.addEventListener('activate', function(e) {
  self.registration.unregister()
    .then(function() {
      return self.clients.matchAll();
    })
    .then(function(clients) {
      clients.forEach(client => client.navigate(client.url))
    });
});

源在这里

以编程方式删除Service worker:

你可以像这样通过编程方式删除service worker:

navigator.serviceWorker.getRegistrations().then(function(registrations) {
    for(let registration of registrations) {
        registration.unregister();
    } 
});

文档:getRegistrations, unregister

通过用户界面移除Service worker

你也可以在Chrome Devtools的Application标签下删除service worker。

如果您想在浏览器中注销所有已注册的service worker, 你可以通过打开前任来做到。

铬:Chrome: / / serviceworker-internals / 勇敢勇敢:/ / serviceworker-internals /

打开DevTools >控制台,粘贴如下:

$$('.unregister').forEach(b => b.click())

它也可以在Chrome通过应用程序选项卡: