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


83

내가 사용하고 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를 지원할 수도 있음)? 내 구성을 변경해야합니까?


9
많은 사람들이이 문제에 직면하고있는 것 같습니다. github.com/angular/angular/issues/20756 github.com/angular/angular/issues/20970 etc. 도움이되지는 않지만 각도 서비스 워커 프로젝트에 따라보고있는 것 같습니다 : github.com / angular / angular / projects / 13
sje 2018 년

1
전체 소스를 제공하십시오 (또는 더 나은 방법은 stackblitz 제발 :)
yomateo

504를 보여주는 네트워크 탭에서 스크린 샷을 제공 할 수 있습니까?
Daniel Habenicht

2
문제대해 몇 가지 작업이 수행되었습니다 . @tobik 이것이 여전히 문제입니까?
Joniras

답변:


1

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


각도 응용 프로그램 에서이 ETag를 어디에서 찾을 수 있습니까?
vndpal

백엔드 구성에서해야합니다.
Tibin Thomas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.