Что вызывает сбой при выполнении "fetch" для "ServiceWorkerGlobalScope": "only-if-cached" может быть установлен только с ошибкой режима "same-origin"?
После обновления до Chrome 64 я понял, что эта ошибка появляется, когда я загружаю свою страницу на новой вкладке.
Я не могу определить, где находится работник службы. Вот мой код для запуска выборки:
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;
});
})
);
}
});
Может ли кто-нибудь здесь, кто имеет больше знаний о работнике службы, помочь мне решить эту ошибку?
3 ответа
Я считаю, что это ошибка Chromium, о которой сообщалось здесь. Надеемся, что это будет исправлено в ближайшее время или будет опубликована дополнительная информация о проблеме.
Пол Ирландский реализовал временную работу вокруг, которая заключается в следующем:
if (e.request.cache === 'only-if-cached' && e.request.mode !== 'same-origin') {
return;
}
Я запустил его в обратном вызове для сервисного работника install
а также fetch
слушатели и это предотвратило ошибку.
Вы можете увидеть полный коммит кода Пола здесь.
Для тех, кто ищет это снова, кажется, что через некоторое время он снова появился, когда кто-то открывает инструменты разработки, вы все еще можете увидеть ошибку, упомянутую в вопросе.
См. (новый) отчет об ошибке здесь: https://bugs.chromium.org/p/chromium/issues/detail?id=1098389
Так что давайте надеяться, что это будет исправлено снова в ближайшее время!
Возможно, имя кеша не уникально для других приложений, кажется, решает проблему для меня.