2015-11-14 8 views
55

Nachdem ich /serviceworker.js aus meinem Stammverzeichnis gelöscht habe, führt Chrome immer noch den Service Worker aus, den ich aus meinem Webroot entfernt habe. Wie deinstalliere ich den Service-Mitarbeiter von meiner Website und Chrome, damit ich mich wieder bei meiner Website anmelden kann?Wie deinstalliere ich einen Service Worker?

Ich habe das Problem bis auf den Cache-Mechanismus von Service Work verfolgt und möchte es jetzt entfernen, bis ich Zeit habe, es zu debuggen. Das von mir verwendete Anmeldeskript verweist auf die Server von Google, damit sie sich in ihrem Google-Konto anmelden können. Aber alles, was ich von der login.php-Seite bekomme, ist eine ERR_FAILED Nachricht.

+0

Ich habe das gleiche Problem in Firefox. – Costa

Antwort

122

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

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

Docs: getRegistrations, unregister

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

+1

Ich musste "use strict" hinzufügen; vor diesem Code, damit es funktioniert. – codeKonami

+3

Gibt es jederzeit eine zeitbasierte Lösung? Angenommen, ein Benutzer wurde einmal besucht, der Mitarbeiter registriert und ist seitdem nicht mehr zurückgekehrt. Muss ich diesen Code für immer im Code speichern? – loganfsmyth

+1

Manchmal .... nur manchmal ..... das ist der beste Weg. Vielen Dank. – tonyedwardspz

54

Sie können auch auf die URL gehen: chrome: // serviceworker-internals/ und Registrierung eines Serviceworker von dort.

+0

das ist besser. –

+0

dies funktioniert in Android –

16

In Google Chrome können Sie auf Entwickler-Tools gehen (F12) -> Anwendung -> Service Arbeiter und austragen die Service-Mitarbeiter aus der Liste für die jeweilige Domäne.

Screenshot

Diese Methode ist im Entwicklungsmodus von einer Website effektiv und meist laufen sie auf localhost was Sie für andere Projektentwicklung benötigen.

2

Sie können dies durch Chrome Developer Tool sowie programmatisch tun.

  1. Hier finden Sie alle laufenden Instanz oder Servicemitarbeiter von

    Chrom eingeben: // Serviceworker-Interna/

    in einem neuen Tab und wählen Sie dann die Serviceworker Sie deregistrieren möchten.

  2. Öffnen Sie die Entwicklertools (F12) und wählen Sie Anwendung.Entweder dann

    Wählen Sie Speicher löschen -> Unregister Servicemitarbeiter

    oder

    Select Service Workers -> Wählen Sie Aktualisieren auf Reload

  3. Programatically

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

0

Sie sollten zwei API in Ihre Geräte detecte: getRegistrations und getRegistration. Der Service-Mitarbeiter hat auf allen Plattformen keine eindeutigen APIs. Zum Beispiel haben einige Browser nur eine navigator.serviceWorker.getRegistration, keine navigator.serviceWorker.getRegistrations. Du solltest also mit beiden überlegen.