web-dev-qa-db-fra.com

WebApp: Echecs: le technicien de service ne sert pas correctement le start_url du manifeste

Après avoir testé l'application Web avec Lighthouse, j'ai l'erreur suivante:

L'utilisateur ne sera pas invité à installer Web. Les navigateurs peuvent de manière proactive Invitez les utilisateurs à ajouter votre application à leur écran d’accueil, qui peut conduire à un engagement plus élevé. Apprendre encore plus. 

Échecs: travailleur de service ne parvient pas à servir le start_url du manifeste.

Tous les critères décrits ici sont satisfaits:

  1. Le site est servi sur HTTPS.
  2. Un technicien est enregistré. 
  3. L'étendue de l'agent de service comprend la page que vous avez auditée et la page spécifiée dans la propriété start_url du manifeste de l'application Web.
  4. Un manifeste d'application Web existe et répond aux critères suivants: Possède une propriété de nom Valide. A une propriété valide short_name. Possède une propriété start_url valide. A une propriété d'affichage valide et la valeur est Autonome, plein écran ou minimal-ui. Spécifie une icône d'au moins 192 pixels par 192 pixels.

Les fichiers manifestes sont rendus via un script. Les variables importantes sont

scope_url = 'https://website.com/app/'
start_url = 'https://website.com/app/about/'

ServiceWoker.js est assez simple:

self.addEventListener('Push', function(e) {

  ...
});

self.addEventListener('notificationclick', function (e) {
    ...
);

Web App et sw.js sont servis à partir de start_url. 

Que puis-je vérifier?

Edit 1. Lorsque j'essaie de "Ajouter à l'écran d'accueil" depuis la console Chrome, je reçois:

Site cannot be installed: the page does not work offline ce qui est proche de ce commentaire

10
Alexander Tyapkov

Après avoir remplacé start_url par ' https://website.com/app/ ' Et ajouté:

self.addEventListener('fetch', function(e){

});

à serviceWorker.js, le problème a été résolu.

3
Alexander Tyapkov

Il semble qu'une version récente de chrome-devtools-lighthouse vérifie que votre start_url est bien servi (du contenu et du code de réponse 200 sont renvoyés) même lorsque le périphérique est hors ligne.

0
asiop