Progressive web app non Interceptée (promettre) TypeError: impossible de récupérer
J'ai commencé à apprendre PWA (Progressive Web App) et j'ai un problème, la console "jette" erreur non Interceptée (promettre) TypeError: impossible de récupérer.
Quelqu'un sait ce que pourrait être la cause?
let CACHE = 'cache';
self.addEventListener('install', function(evt) {
console.log('The service worker is being installed.');
evt.waitUntil(precache());
});
self.addEventListener('fetch', function(evt) {
console.log('The service worker is serving the asset.');
evt.respondWith(fromCache(evt.request));
});
function precache() {
return caches.open(CACHE).then(function (cache) {
return cache.addAll([
'/media/wysiwyg/homepage/desktop.jpg',
'/media/wysiwyg/homepage/bottom2_desktop.jpg'
]);
});
}
function fromCache(request) {
return caches.open(CACHE).then(function (cache) {
return cache.match(request).then(function (matching) {
return matching || Promise.reject('no-match');
});
});
}
Vous devez vous connecter pour publier un commentaire.
Je pense que cela est dû au fait que vous n'avez pas une stratégie de repli.
event.respondWith
est livré avec une promesse que vous avez à les attraper si il y a une erreur.Donc, je suggère que vous modifiez votre code à partir de ce:
À quelque chose comme ceci:
REMARQUE: Il existe de nombreuses stratégies pour la mise en cache, ce que j'ai montré ici est hors ligne premier approche. Pour plus d'info cette & cette est à lire absolument.
J'ai trouvé une solution pour la même erreur, dans mon cas, l'erreur a montré que lorsque le travailleur des services ne pouvait pas trouver un fichier*, le fixer par la suite le réseau dans l'outil de dev de chrome session, et a identifié le fichier inexistant que le travailleur n'a pas trouvé et enlevé tableau de fichier à enregistrer.
*J'ai mis en caractères gras la solution pour moi... j'ai commencer avec juste un fichier de cache, puis ajouter un autre... jusqu'à ce que je obtenir le chemin d'accès incorrect à une, également de définir la portée {champ: '/'} ou {champ: './'} - edit de lawrghita
J'ai eu le même message d'erreur et dans mon cas, Adblock bloque l'extraction d'une url qui a commencé par l'annonce (par exemple, /adsomething.php)
Dans mon cas, les fichiers mis en cache n'ont pas été trouvés (vérifier le réseau de la console), quelque chose à faire avec des chemins relatifs, depuis que je suis avec localhost et le site est dans un sous-répertoire, car je développe plusieurs projets sur un serveur XAMPP.
J'ai donc changé
Ci-dessous: notez le "./" sur le cached_assets