web-dev-qa-db-fra.com

Comment désinstaller un technicien?

Après avoir supprimé /serviceworker.js de mon répertoire racine, Chrome exécute toujours le service worker que j'ai supprimé de ma racine Web. Comment désinstaller le technicien de maintenance de mon site Web et de Chrome afin de pouvoir me reconnecter à mon site Web?

J'ai suivi le problème jusqu'au mécanisme de cache de Service Work et je veux simplement le supprimer pour l'instant jusqu'à ce que j'ai le temps de le déboguer. Le script de connexion que j'utilise redirige vers les serveurs de Google pour qu'ils puissent se connecter à leur compte Google. Mais tout ce que je reçois de la page login.php est un message ERR_FAILED

92
Mark Tomlin

Vous pouvez supprimer les travailleurs du service par programme de la manière suivante:

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

Docs: getRegistrations , désinscrire

Vous pouvez également supprimer les agents de maintenance sous l'onglet Application dans Chrome Devtools.

219
Daniel Herr

Vous pouvez également aller à l'URL: chrome: // serviceworker-internals/et annuler l'enregistrement d'un serviceworker à partir de là.

81
k00k

Vous pouvez le faire via Chrome Developer Tool ainsi que par programmation .

  1. Recherchez toutes les instances ou les agents de service en cours d'exécution en les saisissant.

    chrome: // serviceworker-internals /

    dans un nouvel onglet, puis sélectionnez le servicework que vous souhaitez annuler l’enregistrement.

  2. Ouvrez les outils de développement (F12) et sélectionnez Application. Alors soit 

    Sélectionnez Clear Storage -> Unregister service worker.

    ou

    Sélectionnez Service Workers -> Choose Update on Reload

  3. Par programmation 

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

21
Sakshi Nagpal

Dans Google Chrome, vous pouvez accéder à Outils de développement (F12) -> Application -> Opérateur de service et unregister aux agents de maintenance de la liste de ce domaine spécifique.

 Screenshot

Cette méthode est efficace en mode développement d'un site et la plupart du temps, ils fonctionnent sur localhost, ce qui est peut-être nécessaire pour le développement d'autres projets.

21
Asim K T

Vous devez détecter deux API dans vos appareils: getRegistrations et getRegistration . Le service-worker ne dispose pas d'un ensemble unique d'API sur toutes les plateformes. Par exemple, certains navigateurs ont uniquement un navigator.serviceWorker.getRegistration, pas navigator.serviceWorker.getRegistrations. Donc, vous devriez envisager avec les deux.

4
GuoX

En plus des réponses déjà correctes données, si vous souhaitez également supprimer le cache SW, vous pouvez utiliser:

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

Vous pouvez lire plus ici (Paragraphe: "Désenregistrer un prestataire de services")

Ou via le navigateur, accédez à la section "Cache Storage" et cliquez sur le bouton "Effacer les données du site":

enter image description here

1
Francesco

Pour votre information, si vous utilisez MacOS Safari browser, il existe un moyen de désenregistrer de force un opérateur de maintenance (étapes et images pour Safari 12.1):

  1. Safari> Préférences ...> Confidentialité> Gérer les données du site Web…  Safari Preferences : Privacy 

  2. Entrez le nom de domaine (ex. 'Localhost'), cliquez sur "Supprimer"  Safari Preferences : Privacy : manage website data 

Remarque: Outre les opérateurs de service, tous les caches, cookies et bases de données de ce domaine seront également effacés.

0
terrymorse