41 votes

Qu'est-ce qui provoque l'échec de l'exécution de la «récupération» sur «ServiceWorkerGlobalScope»: «uniquement si mis en cache» ne peut être défini qu'avec une erreur de mode «de même

Après la mise à niveau vers Chrome 64, j'ai réalisé que cette erreur apparaît lorsque je charge ma page dans un nouvel onglet.

entrez la description de l'image ici

Je ne peux pas identifier où il se trouve sur le travailleur de service. Voici mon code pour exécuter la récupération:

 self.addEventListener('fetch', function(event) {
   if (event.request.url.startsWith(self.location.origin)) {
       event.respondWith(
           caches.match(event.request).then(function(response) {
              return response || fetch(event.request).then(function(fetch_resp){
                  return fetch_resp;
              });
           })
       );
   }
});
 

Quelqu'un ici, qui a plus de connaissances sur le travailleur de service, pourrait-il m'aider à résoudre cette erreur?

43voto

rjbultitude Points 452

Je crois que c'est un Chrome bug qui a été rapporté ici. J'espère que ce sera bientôt réparé ou quelques informations supplémentaires sur le problème sera publié.

Paul Irlandais a mis en œuvre une solution temporaire, qui est comme suit:

if (e.request.cache === 'only-if-cached' && e.request.mode !== 'same-origin') {
  return;
}

J'ai couru à l'intérieur de la fonction de rappel pour le travailleur install et fetch des auditeurs et il a empêché l'erreur.

Vous pouvez voir la pleine commettre de Paul de code ici.

-1voto

user3067740 Points 1

peut-être que le nom du cache n'est pas unique des autres applications, semble résoudre le problème pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X