Hello tout le monde,
J'essaye de créer une PWA avec le tutoriel de Grafikart (et celui du site web.dev) et j'aimerais mettre une page pour quand on est hors-ligne. J'arrive à mettre en cache les fichiers souhaités, mais lorsque je passe hors-ligne, j'obtiens des erreurs dans la console et dans la partie "network" qui me dit que l'app n'arrive pas à récuperer ces fichiers du cache. Seul mon fichier html est récuperé, mais pas ce qui va avec (ex: svg, scripts...). Il y a aussi une librairie sur un CDN ainsi que ce que CSS import qui est récuperé.

Voici un screenshot de mon cache :
[url=https://postimg.cc/1VQ3xp6H][img]https://i.postimg.cc/1VQ3xp6H/cache.png[/img][/url]

Et les erreurs que j'obtiens en étant hors-ligne sur le console et le "network" :
[url=https://postimg.cc/6TrQrmJ1][img]https://i.postimg.cc/6TrQrmJ1/console-error.png[/img][/url]
[url=https://postimg.cc/JH54RG5W][img]https://i.postimg.cc/JH54RG5W/network-error.png[/img][/url]

Enfin, voici le code de mon service worker :

const OFFLINE_VERSION = 1;
const CACHE_NAME = "offline";
const OFFLINE_URL = "offline.html";
const BASE = location.protocol + "//" + location.host;
const CACHED_FILES = [
  "https://cdn.jsdelivr.net/npm/kute.js@2.1.2/dist/kute.min.js",
  `${BASE}/src/favicon/favicon.ico`,
  `${BASE}/src/favicon/android-chrome-192x192.png`,
  `${BASE}/src/favicon/android-chrome-512x512.png`,
  `${BASE}/src/favicon/apple-touch-icon.png`,
  `${BASE}/src/favicon/favicon-16x16.png`,
  `${BASE}/src/favicon/favicon-32x32.png`,
  `${BASE}/src/svg/layered-waves.svg`,
  `${BASE}/js/background.js`,
  `${BASE}/js/animation-blob.js`
];

self.addEventListener('install', (event) => {
  event.waitUntil((async() => {
    const cache = await caches.open(CACHE_NAME);
    await Promise.all(
      [...CACHED_FILES, OFFLINE_URL].map((path) => {
        return cache.add(new Request(path, {cache: "reload"}));
      })
    );
  })());

  self.skipWaiting();
});

self.addEventListener('activate', (event) => {
  event.waitUntil((async () => {
    if ("navigationPreload" in self.registration) {
      await self.registration.navigationPreload.enable();
    }
  })());

  self.clients.claim();
});

self.addEventListener('fetch', (event) => {
  if(event.request.mode === "navigate") {
    event.respondWith((async() => {
      try {
        const preloadResponse = await event.preloadResponse;
        if(preloadResponse) {
          return preloadResponse;
        }

        return await fetch(event.request);
      } catch(e) {
        const cache = await caches.open(CACHE_NAME);
        return await cache.match(OFFLINE_URL);
      }
    })());
  }
});

Voilà tout, pourriez-vous m'expliquer donc à quoi est dû cette erreur svp ?

Merci d'avance pour vous réponses !

1 réponse


xeway
Auteur

Les images ne semblent pas marcher... Voici donc les liens pour les voirs :
https://postimg.cc/1VQ3xp6H
https://postimg.cc/6TrQrmJ1
https://postimg.cc/JH54RG5W