如何修复未使用 service worker 和 onesignal 定义的 importScripts?
How to fix importScripts not defined using service worker and onesignal?
我正在尝试设置一个带有一个信号通知的网络推送应用程序。我对 service workers 一无所知,但使用过 rails service-workers gem。我收到此错误>未定义 importScripts。
我已经学习了 rossta 的本教程,serviceworker-rails。
错误必须在 OneSignalSDKWorker.js.erb.
我已经尝试将名称更改为 OneSignalSDKWorker.js
似乎没有任何效果。我在 Heroku 上完全使用 https。
创建一个函数
``` funtion(){
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');
};
```serviceworket-companion.js
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/serviceworker.js', { scope: './' })
.then(function(reg) {
console.log('[Companion]', 'Service worker registered!');
});
}
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/OneSignalSDKWorker.js', { scope: './' })
.then(function(reg) {
console.log('[Companion] Onesignal worker registered!');
});
}
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/OneSignalSDKUpdaterWorker.js', { scope: './' })
.then(function(reg) {
console.log('[Companion] Updater worker registered!');
});
}
```
``` OneSignalSDKworker.js.erb
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');
```
我希望让用户订阅 onesignal,但它只会给我那个错误!
我可以看到一些潜在的问题。
1) 如果您尝试从 service worker importScripts
,则需要在文件顶部执行,而不是在方法中执行。换句话说,它必须是在您的 Service Worker 中运行的第一件事。
2) 您正在尝试注册多个有效的服务工作者,但前提是它们是为不同的范围定义的。在您提供的代码中,您正在为同一范围注册它们,该范围只会注册其中一个。
我正在尝试设置一个带有一个信号通知的网络推送应用程序。我对 service workers 一无所知,但使用过 rails service-workers gem。我收到此错误>未定义 importScripts。 我已经学习了 rossta 的本教程,serviceworker-rails。 错误必须在 OneSignalSDKWorker.js.erb.
我已经尝试将名称更改为 OneSignalSDKWorker.js 似乎没有任何效果。我在 Heroku 上完全使用 https。 创建一个函数
``` funtion(){
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');
};
```serviceworket-companion.js
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/serviceworker.js', { scope: './' })
.then(function(reg) {
console.log('[Companion]', 'Service worker registered!');
});
}
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/OneSignalSDKWorker.js', { scope: './' })
.then(function(reg) {
console.log('[Companion] Onesignal worker registered!');
});
}
if (navigator.serviceWorker) {
navigator.serviceWorker.register('/OneSignalSDKUpdaterWorker.js', { scope: './' })
.then(function(reg) {
console.log('[Companion] Updater worker registered!');
});
}
```
``` OneSignalSDKworker.js.erb
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');
```
我希望让用户订阅 onesignal,但它只会给我那个错误!
我可以看到一些潜在的问题。
1) 如果您尝试从 service worker importScripts
,则需要在文件顶部执行,而不是在方法中执行。换句话说,它必须是在您的 Service Worker 中运行的第一件事。
2) 您正在尝试注册多个有效的服务工作者,但前提是它们是为不同的范围定义的。在您提供的代码中,您正在为同一范围注册它们,该范围只会注册其中一个。