web-dev-qa-db-fra.com

Angular Service Worker - Échec du chargement de la ressource: le serveur a répondu avec un état de 504 (Délai d'expiration de la passerelle)

J'utilise Angular-CLI 1.6.6 et @ angular/service-worker 5.2.5 dans notre application Angular 5.2.5. Tout fonctionne bien sur le lite-server local, ainsi que sur le serveur de production, à l'exception d'un message d'erreur apparaissant dans notre environnement de production:

Failed to load resource: the server responded with a status of 504 (Gateway Timeout)

En examinant le script ngsw-worker.js, j'ai trouvé les lignes (2466 suivantes) où le message d'erreur ci-dessus est généré:

async safeFetch(req) {
    try {
        return await this.scope.fetch(req);
    }
    catch (err) {
        this.debugger.log(err, `Driver.fetch(${req.url})`);
        return this.adapter.newResponse(null, {
            status: 504,
            statusText: 'Gateway Timeout',
        });
    }
} 

L'erreur de journalisation de la console dans le catch provoque l'erreur suivante:

TypeError: Failed to execute 'fetch' on 'ServiceWorkerGlobalScope': 'only-if-cached' can be set only with 'same-Origin' mode
    at Driver.safeFetch (ngsw-worker.js:2464)
    at Driver.handleFetch (ngsw-worker.js:1954)
    at <anonymous>

Une erreur qui semble liée à cette question: Qu'est-ce qui provoque l'échec de l'exécution de la récupération sur 'ServiceWorkerGlobalScope': 'only-if-cached' ne peut être défini qu'avec une erreur de mode 'same-Origin'?

La demande qui génère cette erreur est tout premier accès à l'application:

https://example.com/test/#/connect
https://example.com/test/#/map?token=[accestoken]
...

Lors du rechargement de l'application, l'erreur n'est pas répétée.

Quelqu'un peut-il m'aider ici? Existe-t-il un bogue dans safeFetch () de l'agent de service (peut-être pour prendre en charge HashLocationStrategy)? Dois-je changer quelque chose dans ma configuration?

43
tobik

La désactivation de l'en-tête ETag du backend a résolu temporairement ce problème.

1
Tibin Thomas