Javascript 无法在“WorkerGlobalScope”上执行“importScripts”

Javascript 无法在“WorkerGlobalScope”上执行“importScripts”,javascript,progressive-web-apps,nuxt.js,onesignal,Javascript,Progressive Web Apps,Nuxt.js,Onesignal,我正在尝试在我的pwa nuxtjs应用程序中启用OneSignal通知 modules: [ '@nuxtjs/axios', '@nuxtjs/onesignal', '@nuxtjs/pwa', ], oneSignal: { cdn: true, OneSignalSDK: 'https://cdn.onesignal.com/sdks/OneSignalSDK.js', init: { appId: 'xxxxxxx

我正在尝试在我的pwa nuxtjs应用程序中启用OneSignal通知

modules: [
    '@nuxtjs/axios',
    '@nuxtjs/onesignal',
    '@nuxtjs/pwa',
  ],

  oneSignal: {
    cdn: true,
    OneSignalSDK: 'https://cdn.onesignal.com/sdks/OneSignalSDK.js',
    init: {
      appId: 'xxxxxxxxxxx',
      allowLocalhostAsSecureOrigin: true,
      welcomeNotification: {
          disable: true
      }
    }
  },
  workbox: {
    dev: true,
    debug: true
  },
我收到弹出通知,当我按Accept时,出现以下错误:

获取脚本时收到错误的HTTP响应代码404。 sw.js?1557093232129:1未捕获的DomeException:未能执行

“WorkerGlobalScope”上的“importScripts”:位于 加载失败。 在 在 匿名@sw.js?1557093232129:1

js:371[服务工作者安装]正在安装 服务工作人员失败类型错误:注册服务工作人员失败: ServiceWorker脚本评估失败


我在静态文件夹中也有sw.js文件。在Github问题部分发现了类似的问题,但没有真正的解决方案。

我们的服务人员OneSignalSDKWorker.js和OneSignalSDKUpdaterWorker.js覆盖在最顶端的站点根服务人员作用域中注册的其他服务人员。解决方案是使用importScripts将所有其他服务工作者脚本合并到我们的服务工作者脚本中,并注册合并的服务工作者而不是原始工作者

OneSignalSDKWorker.js和OneSignalsdKUpdateWorker.js都包含以下代码:

importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');
请修改OneSignalSDKWorker.js和onesignalsdKUpdateWorker.js以导入其他服务工作者脚本,如:

importScripts('https://example.com/sw.js');
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');
我们建议使用上述方法,而不是将我们的服务工作者导入到另一个文件中,因为我们的web SDK将替换在根作用域上注册的其他工作者

此外,请确保修改您站点的代码以注册OneSignalSDKWorker.js,而不是您自己的工作人员。您可以使用以下代码执行此操作:

navigator.serviceWorker.register('/OneSignalSDKWorker.js');

有关

我们的服务人员OneSignalSDKWorker.js和OneSignalsdKUpdateWorker.js的信息将覆盖在最高站点根服务人员作用域中注册的其他服务人员。解决方案是使用importScripts将所有其他服务工作者脚本合并到我们的服务工作者脚本中,并注册合并的服务工作者而不是原始工作者

OneSignalSDKWorker.js和OneSignalsdKUpdateWorker.js都包含以下代码:

importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');
请修改OneSignalSDKWorker.js和onesignalsdKUpdateWorker.js以导入其他服务工作者脚本,如:

importScripts('https://example.com/sw.js');
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');
我们建议使用上述方法,而不是将我们的服务工作者导入到另一个文件中,因为我们的web SDK将替换在根作用域上注册的其他工作者

此外,请确保修改您站点的代码以注册OneSignalSDKWorker.js,而不是您自己的工作人员。您可以使用以下代码执行此操作:

navigator.serviceWorker.register('/OneSignalSDKWorker.js');

有关配置的信息应如下所示:

  oneSignal: {
    cdn: true,
    OneSignalSDK: 'https://cdn.onesignal.com/sdks/OneSignalSDK.js',
    init: {
      appId: 'xxxxxxxxxxx',
      allowLocalhostAsSecureOrigin: true,
      welcomeNotification: {
          disable: true
      }
    },
    importScripts: ["/sw.js"]
  }

您的配置应如下所示:

  oneSignal: {
    cdn: true,
    OneSignalSDK: 'https://cdn.onesignal.com/sdks/OneSignalSDK.js',
    init: {
      appId: 'xxxxxxxxxxx',
      allowLocalhostAsSecureOrigin: true,
      welcomeNotification: {
          disable: true
      }
    },
    importScripts: ["/sw.js"]
  }

你检查过了吗?链接好像死了[*]@MαπμQμαπkγVπ。0你检查过了吗?链接好像死了[*]@MαπμQμαπkγVπ。0