Javascript 使用workbox的injectmanifest在vue.js中创建服务工作者

Javascript 使用workbox的injectmanifest在vue.js中创建服务工作者,javascript,vue.js,service-worker,progressive-web-apps,web-notifications,Javascript,Vue.js,Service Worker,Progressive Web Apps,Web Notifications,我试图通过workbox创建一个定制的服务工作者来使用vue.js的渐进式web应用功能。每次我尝试构建应用程序时,都会出现以下错误: AssertionError[ERR_ASSERTION]:swSrc必须设置为现有服务工作程序文件的路径 project/vue.config.js: module.exports = { runtimeCompiler: true, pwa: { workboxPluginMode: "InjectManifest", plugins

我试图通过workbox创建一个定制的服务工作者来使用vue.js的渐进式web应用功能。每次我尝试构建应用程序时,都会出现以下错误: AssertionError[ERR_ASSERTION]:swSrc必须设置为现有服务工作程序文件的路径

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上的格式更改为以./lead开头,或者干脆/甚至删除src/,但这些都没有起到任何作用。我也尝试过处理workbox生成的代码,然后将其粘贴到service-worker.js中,但它仍然无法识别。如何让InjectManifest识别我的服务人员文件?

我回答了自己的问题。我需要将project/vue.config.js更改为

module.exports = {
  runtimeCompiler: true,
  pwa: {
    workboxPluginMode: "InjectManifest",
    workboxOptions:{
      swSrc: "src/service-worker.js"
  }
};

我回答了我自己的问题。我需要将project/vue.config.js更改为

module.exports = {
  runtimeCompiler: true,
  pwa: {
    workboxPluginMode: "InjectManifest",
    workboxOptions:{
      swSrc: "src/service-worker.js"
  }
};