如何修复未使用 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) 您正在尝试注册多个有效的服务工作者,但前提是它们是为不同的范围定义的。在您提供的代码中,您正在为同一范围注册它们,该范围只会注册其中一个。