Различные методы workbox.*
должны выполняться синхронно при запуске сервисного работника, чтобы загрузить необходимые пакеты времени выполнения и установить надлежащие прослушиватели событий до того, как события начнут срабатывать.Вы не сможете делать что-либо асинхронное, например чтение из Cache Storage API или IndexedDB, до инициализации Workbox.
Я не знаю, насколько вам нужна гибкость в отношении переключения Workbox.находится в режиме отладки или нет, но, возможно, поможет следующее.Он позволяет использовать параметр запроса URL-адреса, чтобы определить, будет ли данная регистрация работника службы запускать режим отладки Workbox или нет.
// Inside your service worker,
// before you make any other calls to workbox.* methods.
const url = new URL(location.href);
const debug = url.searchParams.has('debug');
workbox.setConfig({debug});
, а затем при регистрации:
// To enable debugging:
navigator.serviceWorker.register('/service-worker.js?debug');
// To run without debugging:
// navigator.serviceWorker.register('/service-worker.js');
Возможно, вы уже знаете это, но Workbox автоматически переключится в режим debug: true
, когда обнаружит, что он работает на localhost
, и запустится в рабочем режиме по умолчанию.