it-swarm.com.de

Wie deinstalliere ich einen Service Worker?

Nach dem Löschen von /serviceworker.js aus meinem Stammverzeichnis führt Chrome weiterhin den Service-Worker aus, den ich aus meiner Webroot entfernt habe. Wie deinstalliere ich den Service-Mitarbeiter von meiner Website und Chrome, um mich wieder bei meiner Website anzumelden?

Ich habe das Problem mit dem Cache-Mechanismus von Service Work aufgespürt und möchte es vorerst entfernen, bis ich Zeit habe, es zu debuggen. Das von mir verwendete Anmeldeskript leitet auf die Google-Server um, damit sie sich bei ihrem Google-Konto anmelden können. Aber alles, was ich von der login.php-Seite bekomme, ist eine ERR_FAILED-Nachricht. 

92
Mark Tomlin

Sie können Service-Mitarbeiter wie folgt programmgesteuert entfernen:

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

Dokumente: getRegistrations , unregister

Sie können Service-Mitarbeiter auch auf der Registerkarte Anwendung in Chrome Devtools entfernen.

219
Daniel Herr

Sie können auch zur URL: chrome: // serviceworker-internals/gehen und dort einen Servicemitarbeiter abmelden.

81
k00k

Sie können dies über Chrome Developer Tool sowie Programically durchführen.

  1. Finden Sie alle laufenden Instanzen oder Servicemitarbeiter, indem Sie sie eingeben

    chrome: // serviceworker-internals /

    wählen Sie in einer neuen Registerkarte den Servicearbeiter aus, dessen Registrierung Sie aufheben möchten.

  2. Öffnen Sie die Entwicklertools (F12) und wählen Sie Anwendung aus. Dann entweder 

    Wählen Sie Speicher löschen -> Service Worker abmelden

    oder

    Wählen Sie Service Workers aus -> Wählen Sie Update beim Neuladen

  3. Programmatisch 

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

21
Sakshi Nagpal

In Google Chrome können Sie Entwicklertools (F12) -> Anwendung -> Servicemitarbeiter und Registrierung aufheben die Servicemitarbeiter aus der Liste für diese bestimmte Domäne aufrufen.

 Screenshot

Diese Methode ist im Entwicklungsmodus einer Site effektiv und wird meistens mit localhost ausgeführt, was möglicherweise für die Entwicklung eines anderen Projekts erforderlich ist.

21
Asim K T

Sie sollten zwei APIs auf Ihren Geräten erkennen: getRegistrations und getRegistration . Der Service-Worker verfügt nicht auf allen Plattformen über einen eindeutigen Satz von APIs. Beispielsweise haben einige Browser nur einen navigator.serviceWorker.getRegistration, keinen navigator.serviceWorker.getRegistrations. Sie sollten also mit beiden überlegen.

4
GuoX

Wenn Sie zusätzlich zu den bereits richtigen Antworten auch den SW-Cache löschen möchten, können Sie Folgendes verwenden:

if ('caches' in window) {
    caches.keys()
      .then(function(keyList) {
          return Promise.all(keyList.map(function(key) {
              return caches.delete(key);
          }));
      })
}

Sie können lesen mehr hier (Paragraph: "Unregister a service worker")

Oder über den Browser auf den Bereich "Cache-Speicher" zugreifen und auf die Schaltfläche "Site-Daten löschen" klicken:

enter image description here

1
Francesco

Falls Sie MacOS Safari browser verwenden, gibt es eine Möglichkeit, die Registrierung eines Servicemitarbeiters aufzuheben (Schritte und Bilder für Safari 12.1):

  1. Safari> Einstellungen ...> Datenschutz> Websitedaten verwalten ...  Safari Preferences : Privacy 

  2. Geben Sie den Domainnamen ein (zB 'localhost') und klicken Sie auf "Entfernen"  Safari Preferences : Privacy : manage website data 

Hinweis: Zusätzlich zu den Servicemitarbeitern werden hierdurch auch alle Caches, Cookies und Datenbanken für diese Domain gelöscht.

0
terrymorse