Я пытаюсь использовать прогрессивные возможности веб-приложения vue.js, создавая настраиваемого работника службы через рабочий ящик. Каждый раз, когда я пытаюсь создать приложение, я получаю следующую ошибку: AssertionError [ERR_ASSERTION]: swSrc must be set to the path to an existing service worker file.
проект / vue.config.js:
module.exports = {
runtimeCompiler: true,
pwa: {
workboxPluginMode: "InjectManifest",
plugins: [
new InjectManifest({
swSrc: "src/service-worker.js"
})
]
}
};
проект / src / service-worker.js:
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.suppressWarnings();
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
//Web Push Notifications//
let click_open_url;
self.addEventListener("push", function(event) {
let push_message = event.data.json();
// push notification can send event.data.json() as well
click_open_url = push_message.notification.data.url;
const options = {
body: push_message.notification.body,
icon: push_message.notification.icon,
image: push_message.notification.image,
tag: "alert"
};
event.waitUntil(
self.registration.showNotification(push_message.notification.title, options)
);
});
self.addEventListener("notificationclick", function(event) {
const clickedNotification = event.notification;
clickedNotification.close();
if (click_open_url) {
const promiseChain = clients.openWindow(click_open_url);
event.waitUntil(promiseChain);
}
});
Я пробовал изменить форматирование на swSrc, чтобы использовать ./
или просто /
и даже удалить src/
, но ни один из них ничего не сделал. Я также пробовал скопировать код, сгенерированный workbox, а затем вставить его в service-worker.js, но он по-прежнему не распознает его. Как мне заставить InjectManifest распознавать мой файл сервис-воркера?