【问题标题】:How to fix importScripts not defined using service worker and onesignal?如何修复未使用 service worker 和 onesignal 定义的 importScripts?
【发布时间】:2019-09-17 01:38:37
【问题描述】:

我正在尝试设置一个带有一个信号通知的网络推送应用程序。我对服务人员一无所知,但使用过 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');
```

我希望让用户订阅一个信号,但它只会给我这个错误!

【问题讨论】:

    标签: ruby-on-rails service-worker web-push


    【解决方案1】:

    我可以看到几个潜在的问题。

    1) 如果您尝试从服务工作者importScripts,则需要在文件顶部而不是在方法中执行。换句话说,它必须是在你的 service worker 中运行的第一件事。

    2) 您正在尝试注册多个有效的服务工作者,但前提是它们是为不同的范围定义的。在您提供的代码中,您正在为同一范围注册它们,该范围只会注册其中一个。

    【讨论】:

    • 您在第 1 点上是对的。此外,我的代码格式不正确。谢谢。
    猜你喜欢
    • 2021-06-30
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 2018-03-04
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    相关资源
    最近更新 更多