diff --git a/src/platform/web/service-worker.template.js b/src/platform/web/service-worker.template.js index bc894b90..e3fa4651 100644 --- a/src/platform/web/service-worker.template.js +++ b/src/platform/web/service-worker.template.js @@ -86,22 +86,29 @@ function isCacheableThumbnail(url) { const baseURL = new URL(self.registration.scope); async function handleRequest(request) { - const url = new URL(request.url); - if (url.origin === baseURL.origin && url.pathname === baseURL.pathname) { - request = new Request(new URL("index.html", baseURL.href)); - } - let response = await readCache(request); - if (!response) { - // use cors so the resource in the cache isn't opaque and uses up to 7mb - // https://developers.google.com/web/tools/chrome-devtools/progressive-web-apps?utm_source=devtools#opaque-responses - if (isCacheableThumbnail(url)) { - response = await fetch(request, {mode: "cors", credentials: "omit"}); - } else { - response = await fetch(request); + try { + const url = new URL(request.url); + if (url.origin === baseURL.origin && url.pathname === baseURL.pathname) { + request = new Request(new URL("index.html", baseURL.href)); } - await updateCache(request, response); + let response = await readCache(request); + if (!response) { + // use cors so the resource in the cache isn't opaque and uses up to 7mb + // https://developers.google.com/web/tools/chrome-devtools/progressive-web-apps?utm_source=devtools#opaque-responses + if (isCacheableThumbnail(url)) { + response = await fetch(request, {mode: "cors", credentials: "omit"}); + } else { + response = await fetch(request); + } + await updateCache(request, response); + } + return response; + } catch (err) { + if (!(err instanceof TypeError)) { + console.error("error in service worker", err); + } + throw err; } - return response; } async function updateCache(request, response) {