wake-up-neo.com

Angular Service Worker - Ressource konnte nicht geladen werden: Der Server hat mit dem Status 504 geantwortet (Gateway Timeout)

Ich benutze die Angular-CLI 1.6.6 und @ angle/service-worker 5.2.5 in unserer Angular 5.2.5 App. Alles funktioniert gut auf dem lokalen Lite-Server sowie auf dem Produktionsserver, bis auf eine Fehlermeldung in unserer Produktionsumgebung:

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

Beim Durchsuchen des Skripts ngsw-worker.js habe ich die Zeilen (2466 folgend) gefunden, in denen die obige Fehlermeldung generiert wird:

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',
        });
    }
} 

Bei der Konsolenprotokollierung im catch wird der folgende Fehler ausgegeben:

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>

Ein Fehler, der mit dieser Frage in Zusammenhang zu stehen scheint: Was bewirkt, dass ein Abruf unter 'ServiceWorkerGlobalScope' nicht ausgeführt werden konnte: 'only-if-cached' kann nur mit dem Modusfehler 'same-Origin' festgelegt werden?

Die Anforderung, die diesen Fehler generiert, ist ein erster Zugriff auf die App:

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

Beim App-Reload wird der Fehler nicht wiederholt.

Kann mir hier jemand helfen? Gibt es einen Fehler in safeFetch () des Service Workers (möglicherweise zur Unterstützung von HashLocationStrategy)? Muss ich irgendetwas in meiner Konfiguration ändern?

43
tobik

Durch Deaktivieren des ETag-Headers im Backend wurde dieses Problem vorübergehend behoben.

1
Tibin Thomas