Je travaille actuellement sur un travailleur de service pour gérer la notification Push dans le navigateur. Actuellement, je rencontre cette "erreur d'échec de l'enregistrement du logiciel". Quelqu'un peut-il aider avec ce problème? Vérifier client1.html
et service-worker.js
fichier ci-dessous:
ERREUR:
L'enregistrement SW a échoué avec l'erreur SecurityError: Impossible d'enregistrer un ServiceWorker: Le protocole URL de l'origine actuelle ("null") n'est pas pris en charge.
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>
Résolu: La première chose est que le service worker ne fonctionne qu'en mode sécurisé soit en https soit en localhost. Il ne fonctionne pas dans les ressources locales comme file: // ou http.
et le deuxième problème était lors de l'inscription.
navigator.serviceWorkerContainer.register('service-worker.js').then(function(reg){
Utilisez chrome webserver, pour exécuter l'application ou simplement une simple commande dans le terminal (Mac) suffirait. python -m SimpleHTTPServer