我正在尝试在 Chrome 中测试推送通知功能。我在此处克隆了 Google 提供的示例 Chrome 推送通知 Web 应用程序:https://github.com/GoogleChrome/samples/tree/gh-pages/push-messaging-and-notifications
当我使用 Web server for Chrome extension
托管 Web 应用程序时,代码运行正常本地主机上的 HTTP 服务器。当我想在移动设备上测试 Web 应用程序时,我无法将 Web 服务器用于 Chrome 扩展,因为它是 HTTP 服务器,除了 localhost 之外,服务工作线程仅在 HTTPS 上工作。因此,我使用自签名证书创建了一个基于 Python 的 HTTPS 服务器,并在那里托管了 Web 应用程序。
现在我收到AbortError: 无法注册 ServiceWorker: ServiceWorker 无法启动
注册 Service Worker 时如下所示:
navigator.serviceWorker.register('./service-worker.js')
service-worker.js 与 html 文件以及我调用此方法的 js 文件位于同一目录中。
关于 Service Worker 的文档并不多。而且这个错误太模糊了,无法弄清楚任何事情。请帮助我找出此错误的根本原因。
最佳答案
我找到了解决方案。 Service Worker 仅在安全的 HTTPS 网络上工作。我创建的 Python HTTPS 服务器是使用自签名证书进行签名的,因此不安全。我使用 ngrok 创建了一个到本地主机的安全 https 隧道,然后它就工作了
关于javascript - 中止错误: Failed to register a ServiceWorker: ServiceWorker cannot be started,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41430841/