Creating a service worker in vue.js using workbox#39;s injectmanifest crashes(使用工作箱的注入清单崩溃在vue.js中创建服务工作人员)
问题描述
我正在尝试使用vue.js的渐进式Web应用程序功能,通过Workbox创建自定义服务工作者。每次我尝试构建应用程序时,都会收到以下错误:
AssertionError [ERR_ASSERTION]: swSrc must be set to the path to an existing service worker file.
project/vue.config.js:
module.exports = {
runtimeCompiler: true,
pwa: {
workboxPluginMode: "InjectManifest",
plugins: [
new InjectManifest({
swSrc: "src/service-worker.js"
})
]
}
};
project/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识别我的服务工作者文件?
推荐答案
我回答了自己的问题。我需要将project/vue.config.js更改为
module.exports = {
runtimeCompiler: true,
pwa: {
workboxPluginMode: "InjectManifest",
workboxOptions:{
swSrc: "src/service-worker.js"
}
};
这篇关于使用工作箱的注入清单崩溃在vue.js中创建服务工作人员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用工作箱的注入清单崩溃在vue.js中创建服务工作人员


- addEventListener 在 IE 11 中不起作用 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01