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

83

Ich benutze das Angular-CLI 1.6.6und @angular/service-worker 5.2.5in unserer Angular 5.2.5App. Auf dem lokalen Lite-Server sowie auf dem Produktionsserver funktioniert alles einwandfrei, bis auf eine Fehlermeldung in unserer Produktionsumgebung:

Fehler beim Laden der Ressource: Der Server antwortete mit dem Status 504 (Gateway Timeout).

Beim Betrachten des ngsw-worker.jsSkripts habe ich die Zeilen (2466 folgt) 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',
            });
        }
    } 

Der Fehler bei der Konsolenprotokollierung im Fang gibt den folgenden Fehler aus:

    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 führt dazu, dass "Abrufen" in "ServiceWorkerGlobalScope" fehlgeschlagen ist: "Nur wenn zwischengespeichert" kann nur mit dem Modusfehler "Gleicher Ursprung" festgelegt werden?

Die Anforderung, die diesen Fehler generiert, ist jeder erste Zugriff auf die App:

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

Beim erneuten Laden der App wird der Fehler nicht wiederholt.

Kann mir hier jemand helfen? Gibt es einen Fehler im safeFetch()Service Worker (möglicherweise zur Unterstützung von HashLocationStrategy)? Muss ich etwas an meiner Konfiguration ändern?

tobik
quelle
9
Es scheint, dass viele Menschen mit diesem Problem konfrontiert sind. github.com/angular/angular/issues/20756 github.com/angular/angular/issues/20970 usw. Nicht, dass es hilfreich wäre, aber es scheint, dass es gemäß dem Angular Service Worker-Projekt betrachtet wird: github.com / eckig / eckig / projekte / 13
sje
1
Bitte geben Sie vollständige Quellen an (oder noch besser, Stackblitz bitte :)
Yomateo
Können Sie auf der Registerkarte "Netzwerk" einen Screenshot mit dem 504 bereitstellen?
Daniel Habenicht
2
Es wurden einige Arbeiten zu diesem Thema durchgeführt . @tobik ist das noch ein Problem?
Joniras
2
Es ist ein Chrom-Bug bugs.chromium.org/p/chromium/issues/detail?id=823392
Fateh Mohamed

Antworten:

1

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

Tibin Thomas
quelle
Können Sie bitte Ihre Antwort ausarbeiten? Wo finde ich diesen ETag in einer eckigen Anwendung?
vndpal
Sie müssen dies in der Backend-Konfiguration tun.
Tibin Thomas