Используйте пакеты npm workbox-core и workbox-routing - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь понять, как использовать workbox-core и workbox-routing.

Примечание Я использую пакет gulp + browserify, чтобы мой код работал в моем браузере.

Я скачал пакет, используя пряжу:

yarn add --dev workbox-core@4.* workbox-routing@4.*

Который работает нормально. Сервисный работник установлен правильно, и дальнейшая перезагрузка пропустит ожидание.

Тогда я написал это в своем работнике службы:

import { workbox } from "workbox-core";

workbox.core.clientsClaim();
workbox.core.skipWaiting();

А потом я попытался добавить маршрутизацию:

import { workbox } from "workbox-core";
import { registerRoute } from "workbox-routing";

workbox.core.clientsClaim();
workbox.core.skipWaiting();

Но я обнаружил эту ошибку в DevTools:

Uncaught ReferenceError: рабочая область не определена

Так что, я думаю, в какой-то момент workbox-routing нужно workbox-core для работы, потому что это задействованный код в трассировке стека ошибок:

e.setDefaultHandler=(e=>{u().setDefaultHandler(e)}),e}({},workbox.core._private,workbox.core._private)},{}],3:[function(e,t,r){"use strict";var n=e("workbox-core");e("workbox-routing");n.workbox&&(n.workbox.core.clientsClaim(),n.workbox.core.skipWaiting(),console.log("routing",n.workbox))},{"workbox-core":1,"workbox-routing":2}]},{},[3]);

ВОПРОС

Как я могу использовать workbox вместе с его компонентом (маршрутизация, стратегии, ...) в узле?

* 1042 Временное решение *

Вот что я на самом деле делаю, чтобы обойти эту проблему. Я считаю, что это не использует разделенные компоненты, которые предлагает workbox- *, но это имеет свои преимущества для работы ...

import "workbox-sw";
import { workbox as workboxCore } from "workbox-core";

const routes = ["/", "/nous-trouver", "/mentions-legales", "/produit"];

const assetsStrategy = new workbox.strategies.CacheFirst({
    cacheName: "assets-v5"
});

// Main
workboxCore.core.clientsClaim();
workboxCore.core.skipWaiting();

workbox.routing.registerRoute(
    new RegExp(".*(js|css|jpg|jpeg|png|svg|webp|eot|ttf|woff|woff2)$"),
    assetsStrategy
);

for (const route of routes) {
    workbox.routing.registerRoute(route, assetsStrategy);
}

1 Ответ

0 голосов
/ 01 мая 2019

Вы видели руководство в этом Использование Bundlers (webpack / Rollup) с руководством Workbox ?

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

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