From 2740bad00a5e8278d5f85352d7da54e82eb7142b Mon Sep 17 00:00:00 2001 From: ulsklyc <108589275+ulsklyc@users.noreply.github.com> Date: Wed, 25 Mar 2026 12:02:24 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20SW=20staleWhileRevalidate=20gibt=20nie?= =?UTF-8?q?=20undefined=20zur=C3=BCck=20(verhindert=20Promise-Rejection)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn weder Cache noch Netzwerk verfügbar sind gab die Funktion undefined zurück, was event.respondWith() als Promise-Rejection wertet und einen Network Error im Browser erzeugt. Letzter Ausweg ist jetzt eine 503-Antwort. Co-Authored-By: Claude Sonnet 4.6 --- public/sw.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/public/sw.js b/public/sw.js index 8b5264c..74d1dbd 100644 --- a/public/sw.js +++ b/public/sw.js @@ -12,9 +12,9 @@ * API: Immer Netzwerk (kein Caching von Nutzerdaten) */ -const SHELL_CACHE = 'oikos-shell-v8'; -const PAGES_CACHE = 'oikos-pages-v8'; -const ASSETS_CACHE = 'oikos-assets-v8'; +const SHELL_CACHE = 'oikos-shell-v9'; +const PAGES_CACHE = 'oikos-pages-v9'; +const ASSETS_CACHE = 'oikos-assets-v9'; const ALL_CACHES = [SHELL_CACHE, PAGES_CACHE, ASSETS_CACHE]; // App-Shell: sofort benötigt für ersten Render @@ -152,8 +152,12 @@ async function staleWhileRevalidate(request, cacheName) { // Offline-Fallback: SPA-Shell für Navigation if (request.mode === 'navigate') { - return caches.match('/index.html'); + const shell = await caches.match('/index.html'); + if (shell) return shell; } + + // Letzter Ausweg: leere 503-Antwort statt Promise-Rejection + return new Response('Service unavailable', { status: 503 }); } // --------------------------------------------------------