Конструктор WorkboxSW выдает ошибку Undefined

В моем файле рабочего сервиса я использую этот код:

importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.0.0-beta.2/workbox-sw.js");
const workbox = new WorkboxSW();

Но я получаю ошибку Uncaught ReferenceError: WorkboxSW is not defined следовательно, мой сервисный работник не регистрируется.

2 ответа

В Workbox v3 вы обычно не будете явно создавать WorkboxSW пример. Вместо этого есть workbox переменная, представленная в глобальной области видимости, которая обеспечивает интерфейс для библиотеки.

Вот пример, исключенный из руководства по миграции:

Ранее в v2:

importScripts('<path to workbox-sw>/importScripts/workbox-sw.prod.v2.1.3.js');

const workbox = new WorkboxSW({
  skipWaiting: true,
  clientsClaim: true,
  // etc.
});

workbox.router.registerRoute(...);

В v3 вам просто нужно импортировать скрипт workbox-sw.js, и готовый к использованию экземпляр будет автоматически доступен в глобальном пространстве имен как workbox:

importScripts('<path to workbox-sw>/3.0.0/workbox-sw.js');

// workbox is implicitly created and ready for use.
workbox.routing.registerRoute(...);

Я столкнулся с похожей проблемой, но в моем случае мой sw регистрировался, несмотря на сообщение об ошибке. Добавление type="javascript/worker" следующим образом:<script type="javascript/worker" src="sw.js"></script>в моей точке входа устранена ошибка в инструментах разработчика.

Другие вопросы по тегам