Как правильно интегрировать рабочий ящик в webpack/NPM?
В настоящее время я работаю над довольно большим проектом, у которого много разных зависимостей, распределенных по многим файлам. Для начала я использую NPM и веб-пакет, чтобы управлять большинством этих зависимостей. В документации к рабочему столу есть два отдельных способа для меня интегрировать это, либо через веб-пакет (который буквально просто пример), либо через NPM. Я решил попробовать использовать NPM. Я выполнил следующую команду:
npm install --save-dev workbox-sw
Это добавило workbox-sw к package.json
раздел зависимости. Однако всякий раз, когда я пытаюсь импортировать используя:
import Workbox-SW from 'workbox-sw'
это дает мне следующую ошибку:
Uncaught WorkboxError: Workbox выдал ошибку с кодом ошибки:;'not-in-sw'
Я пробовал некоторые другие методы, но только наивно. Документация веб-пакета определенно скучна, и я хотел бы избежать установки других зависимостей для правильной работы. Некоторые другие важные замечания:
- Я использую Vue.js
- Я создал несколько разных компонентов, которые взаимодействуют через маршрутизацию. Я пытаюсь импортировать в определенный компонент.
Вот полное сообщение об ошибке:
Uncaught WorkboxError: An error was thrown by workbox with error code: ;'not-in-sw'
at eval (webpack-internal:///259:175:40)
at Object.<anonymous> (http://localhost:8080/app.js:2361:1)
at __webpack_require__ (http://localhost:8080/app.js:660:30)
at fn (http://localhost:8080/app.js:86:20)
at eval (webpack-internal:///173:3:69)
at Object.<anonymous> (http://localhost:8080/app.js:1795:1)
at __webpack_require__ (http://localhost:8080/app.js:660:30)
at fn (http://localhost:8080/app.js:86:20)
at eval (webpack-internal:///239:8:3)
at Object.<anonymous> (http://localhost:8080/app.js:2239:1)
WorkboxError @ workbox-sw.prod.v2.1.1.mjs?efda:155
(anonymous) @ workbox-sw.prod.v2.1.1.mjs?efda:175
(anonymous) @ app.js:2361
__webpack_require__ @ app.js:660
fn @ app.js:86
(anonymous) @ 173:3
(anonymous) @ app.js:1795
__webpack_require__ @ app.js:660
fn @ app.js:86
(anonymous) @ HomeView.vue?afbe:8
(anonymous) @ app.js:2239
__webpack_require__ @ app.js:660
fn @ app.js:86
(anonymous) @ index.js?3672:1
(anonymous) @ app.js:1809
__webpack_require__ @ app.js:660
fn @ app.js:86
(anonymous) @ main.js?1c90:1
(anonymous) @ app.js:1616
__webpack_require__ @ app.js:660
fn @ app.js:86
(anonymous) @ app.js:2368
__webpack_require__ @ app.js:660
(anonymous) @ app.js:709
(anonymous) @ app.js:712
1 ответ
Конкретная ошибка, которую вы видите, not-in-sw
, из-за использования кода, представленного в workbox-sw
библиотека снаружи ServiceWorkerGlobalScope
, Это произойдет, если вы, например, импортируете код работника сервиса на свою страницу в виде <script>
или как веб-работник.
Лучший ресурс, на который я мог бы обратить ваше внимание, - это новое руководство " Начало работы с Workbox For Webpack".