Конструктор 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>
в моей точке входа устранена ошибка в инструментах разработчика.