web-dev-qa-db-ja.com

サービスワーカーの登録に失敗しました

現在、ブラウザでプッシュ通知を処理するサービスワーカーに取り組んでいます。現在、この「SW登録失敗エラー」が発生しています。誰でもこの問題を解決できますか?チェックclient1.htmlおよびservice-worker.js以下のファイル:

エラー:

エラーSecurityErrorでSW登録が失敗しました:ServiceWorkerの登録に失敗しました:現在のオリジン( 'null')のURLプロトコルはサポートされていません。

service-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>
17

解決済み:まず、Service Workerはhttpsまたはlocalhostのいずれかのセキュアモードでのみ動作します。 file://やhttpなどのローカルリソースでは機能しません。

2番目の問題は登録中です。

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

chrome webserverを使用してアプリを実行するか、ターミナル(Mac)で単純なコマンドを実行します。python -m SimpleHTTPServer

3
geekme