[angular] Angular Service Worker-리소스로드 실패 : 서버가 504 (게이트웨이 시간 초과) 상태로 응답했습니다.

내가 사용하고 Angular-CLI 1.6.6그리고 @angular/service-worker 5.2.5우리의 Angular 5.2.5응용 프로그램. 프로덕션 환경에서 하나의 오류 메시지가 표시되는 것을 제외하고는 프로덕션 서버뿐만 아니라 로컬 라이트 서버에서도 모든 것이 잘 작동합니다.

리소스로드 실패 : 서버가 504 (게이트웨이 시간 초과) 상태로 응답했습니다.

ngsw-worker.js스크립트를 살펴보면 위의 오류 메시지가 생성되는 행 (다음 2466)을 찾았습니다.

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

catch의 콘솔 로깅 오류는 다음 오류를 표시합니다.

    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>

이 질문과 관련된 것으로 보이는 오류 : ‘ServiceWorkerGlobalScope’에서 ‘fetch’를 실행하지 못했습니다. ‘only-if-cached’는 ‘same-origin’모드 오류로만 설정할 수 있습니다.

이 오류를 생성하는 요청은 앱에 대한 첫 번째 액세스입니다.

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

앱을 다시로드 할 때 오류가 반복되지 않습니다.

아무도 여기서 나를 도울 수 있습니까? safeFetch()서비스 워커에 버그가 있습니까 (HashLocationStrategy를 지원할 수도 있음)? 내 구성을 변경해야합니까?



답변

백엔드에서 ETag 헤더를 비활성화하면이 문제가 일시적으로 해결되었습니다.


답변