Приложение PWA Workbox не работает в автономном режиме - PullRequest
0 голосов
/ 23 мая 2018

Кажется, что все работает нормально, когда приложение находится в сети, я могу перемещаться между страницами, и файлы, кажется, кешируются должным образом.Но когда я отключаю браузер, приложение не загружается.

Я получаю эту ошибку:

This site can’t be reached
The web page at http://localhost:8080/ might be temporarily down or it may 
have moved permanently to a new web address.
ERR_FAILED

В консоли я получаю эту ошибку:

The FetchEvent for "http://localhost:8080/" resulted in a network error 
response: the promise was rejected.
Promise.catch (async)
workbox.precaching.moduleExports.addRoute.self.addEventListener.event @ 
workbox-precaching.dev.js:1085
sw.js:1 Uncaught (in promise) TypeError: Failed to fetch

Я думаю, что последняя строка является причиной, почему-то не загружается файл манифеста предкэша:

importScripts("precache-manifest.2e5a7cbc2c0451bb1e36932f58b5075b.js", "https://storage.googleapis.com/workbox-cdn/releases/3.2.0/workbox-sw.js");

Файл манифеста предкэша появляется в консоли в разделе «Источники -> вкладка« Сеть »в категории файлов sw.js.в то время как онлайн.Поэтому я предполагаю, что каким-то образом этот файл не кэшируется и не сохраняется, когда приложение переходит в автономный режим.Я следовал учебному руководству по веб-пакетам и, похоже, не нашел ничего, что указывало бы на файл precache-manifest для хранения.Этот файл даже не отображается на вкладке «Приложение» (консоль) -> «Кэш» -> «Хранилище кэша» -> «my-app-runtime» (или предварительно записанная версия)

1 Ответ

0 голосов
/ 24 мая 2018

Спецификация сервисного работника гласит, что URL-адреса, извлеченные с помощью importScripts(), должны быть неявно кэшированы (с помощью " карты ресурсов сценария ", поэтому вам не нужно предпринимать какие-либо шаги, чтобы гарантировать, что precache-manifest.2e5a7cbc2c0451bb1e36932f58b5075b.js доступен в автономном режиме.

importScripts() URL-адреса кэшируются с помощью механизма, отличного от API Cache Storage, поэтому они не отображаются в средстве просмотра Cache Storage.

Я думаю, что этодругой ресурс, который ваш сервисный работник пытается и не может получить, но не видя весь ваш скрипт сервисного работника, трудно понять, что это такое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...