web-dev-qa-db-fra.com

Erreur 404 lors de la tentative d'enregistrement de serviceWorker

J'obtiens cette erreur en essayant d'inscrire le technicien de service:

Échec de l'inscription d'un serviceWorker: un code de réponse HTTP incorrect (404) a été généré lors de l'extraction du script.

Je travaille avec ionic et voici ce que j'ai dans l'app.js:

   if ('serviceWorker' in navigator) {
      navigator.serviceWorker.register('service-worker.js').then(function(registration) {
      console.log('ServiceWorker registration successful with scope: ', registration.scope);
    }).catch(function(err) {
      //registration failed :(
      console.log('ServiceWorker registration failed: ', err);
    });
  }else {
    console.log('No service-worker on this browser');
  }

Sur le répertoire, j'ai le fichier service-worker.js juste à côté de app.js dans le même dossier. 

Utilisation de la dernière version de chrome sur le bureau Ubuntu.

14
George Cscnt

Vous dites que vous avez service-worker.js dans le même répertoire que app.js, mais l'URL transmise à .register() est relative au chemin du document HTML. Vous devez vous assurer que votre fichier service-worker.js se trouve dans le même répertoire que le fichier .html correspondant à la page sur laquelle vous vous trouvez.

38
Jeff Posnick

Le document HTML qui tente d’enregistrer un service worker et SW.js doit se trouver dans le même répertoire.

 enter image description here

7
Hitesh Sahu

les opérateurs de service et le fichier index.html doivent se trouver dans un répertoire commun.

1
Abhishek kumar

Vous devez simplement indiquer le chemin correct à navigator.serviceWorker.register et il n’est pas nécessaire que ce soit le même fichier HTML.

Par exemple, mon service-worker.js se trouve dans le dossier Scripts de mon application. Par conséquent, je devais passer le chemin "/Scripts/service-worker.js" sur navigator.serviceWorker.register, par exemple:

navigator.serviceWorker.register('/Scripts/service-worker.js')
0
Diego Cotini