2017-01-02 92 views
1

我试图在Chrome中测试推送通知功能。我克隆了Google提供的Chrome推送通知Web应用示例:https://github.com/GoogleChrome/samples/tree/gh-pages/push-messaging-and-notificationsAbortError:无法注册ServiceWorker:无法启动ServiceWorker

当我在本地主机上使用Web server for Chrome extension HTTP服务器托管Web应用程序时,代码工作正常。当我想在移动设备上测试Web应用程序时,由于它是HTTP服务器而不是本地主机,因此我无法将Chrome服务器用于Chrome扩展,因此服务工作人员只能使用HTTPS。所以我使用自签名证书创建了基于python的HTTPS服务器,并在那里托管了Web应用程序。

现在我越来越AbortError: Failed to register a ServiceWorker: ServiceWorker cannot be started 注册时像下面的服务人员:

navigator.serviceWorker.register('./service-worker.js') 

的服务worker.js是在同一目录中的HTML文件,以及离我是JS文件调用这个方法。

服务人员没有太多文件。而且这个错误太模糊了,无法找出任何东西。请帮我弄清楚这个错误的根本原因。

+0

你试过链接'.catch(功能(错误){ console.log(err); })'''.register()呼叫? _“service-worker.js和html文件在同一个目录下”_为什么在'service-worker.js'的路径开始处使用'./'?在使用'service-worker.js'的完整路径时会发生错误吗? – guest271314

回答

0

我找到了解决方案。服务工作人员只能在安全的HTTPS网络上工作。我创建的Python HTTPS服务器使用自签名证书进行签名,因此不安全。我使用ngrok创建一个安全的https隧道到本地主机,然后它的工作