Я пытаюсь использовать Workbox.injectManifest для создания работника сервиса, но у меня возникают проблемы с путём к манифесту предварительного кэширования из-за того, что мой работник сервиса не генерируется должным образом.
Мой Webpack output.path
- это 'path.resolve (' ./ scripts / app / dist ')' и моя конфигурация Workbox:
new WorkboxPlugin.InjectManifest({
swSrc: path.resolve("./scripts/app/src/service-worker.js"),
swDest: "../../../sw.js",
globDirectory: path.resolve("./"),
globPatterns: [
"scripts/**/*.js",
"fonts/**/*.{eot,ttf,woff,woff2,otf}",
"images/**/*.{png,jpg,svg,gif,ico}",
"styles/**/*.css"
]
});
Поскольку по умолчанию Workbox создает файл sw.js в файле output.path, и я хочу, чтобы он находился в корне моего сайта, у меня есть ../../../sw.js
, но манифест предварительного кэша останется в файле output.path, это ./scripts/app/dist
. Проблема заключается в том, что путь, указывающий на манифест в сгенерированном файле sw.js:
importScripts("precache-manifest.472387a6bbb5e3e8f5e8392d628202d5.js", "https://storage.googleapis.com/workbox-cdn/releases/3.1.0/workbox-sw.js");
Это указывает на то, где находится файл sw.js, который находится в корне сайта и не может быть найден. Это ошибка или что-то, что я неправильно настраиваю? Я попытался использовать importDirectory, но он просто переместил манифест в другое место, и путь к sw.js по-прежнему неверен.
UPDATE
У меня есть это в моем шаблоне рабочего сервиса:
workbox.skipWaiting();
workbox.clientsClaim();
workbox.precaching.precacheAndRoute([])
workbox.routing.registerRoute( .......
Но когда я собираю, массив не заполняется, и создается внешний манифест:
Вот что создает плагин:
importScripts("precache-manifest.aa4b439ba2589f9d3cf0c56e1b06323d.js", "https://storage.googleapis.com/workbox-cdn/releases/3.1.0/workbox-sw.js");
workbox.skipWaiting();
workbox.clientsClaim();
workbox.precaching.precacheAndRoute([])
workbox.routing.registerRoute(