現在、ブラウザでプッシュ通知を処理するサービスワーカーに取り組んでいます。現在、この「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>
解決済み:まず、Service Workerはhttpsまたはlocalhostのいずれかのセキュアモードでのみ動作します。 file://やhttpなどのローカルリソースでは機能しません。
2番目の問題は登録中です。
navigator.serviceWorkerContainer.register('service-worker.js').then(function(reg){
chrome webserverを使用してアプリを実行するか、ターミナル(Mac)で単純なコマンドを実行します。python -m SimpleHTTPServer