服务人员注册失败

问题描述 投票:13回答:2

我目前正致力于服务工作者在浏览器中处理推送通知。目前我有这个“SW注册失败错误”。有人可以帮忙解决这个问题吗?检查下面的client1.htmlservice-worker.js文件:

错误:

SW注册失败,出现错误SecurityError:无法注册ServiceWorker:不支持当前源的URL协议('null')。

服务worker.js

console.log('Started', self);
self.addEventListener('install', function(event) {
  self.skipWaiting();
  console.log('Installed', event);
});
self.addEventListener('activate', function(event) {
console.log('Activated', event);
});
self.addEventListener('push', function(event) {
  console.log('Push message received', event);
}); 

client1.html

  <!doctype html>
  <html>
  <head>
  <title>Client 1</title>
  </head>
  <body>
  <script>
     if('serviceWorker' in navigator){
        // Register service worker
        navigator.serviceWorker.register('service-worker.js').then(function(reg){
            console.log("SW registration succeeded. Scope is "+reg.scope);
        }).catch(function(err){
            console.error("SW registration failed with error "+err);
        });
    }
  </script>
  </body>
  </html>
javascript browser service-worker web-push
2个回答
22
投票

解决:首先,服务工作者只能在https或localhost中以安全模式工作。它不适用于本地资源,如file://或http。

第二个问题是在注册期间。

     navigator.serviceWorkerContainer.register('service-worker.js').then(function(reg){

2
投票

使用chrome webserver,运行应用程序或只是终端(Mac)中的简单命令。 python -m SimpleHTTPServer

© www.soinside.com 2019 - 2024. All rights reserved.