Javascript 无法在“WorkerGlobalScope”上执行“importScripts”
我正在尝试在我的pwa nuxtjs应用程序中启用OneSignal通知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
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