【问题标题】:Angular Service Worker - Failed to load resource: the server responded with a status of 504 (Gateway Timeout)Angular Service Worker - 加载资源失败:服务器响应状态为 504(网关超时)
【发布时间】:2018-07-27 11:01:54
【问题描述】:

我在我们的Angular 5.2.5 应用程序中使用Angular-CLI 1.6.6@angular/service-worker 5.2.5。在本地 lite-server 和生产服务器上一切正常,除了在我们的生产环境中弹出一条错误消息:

加载资源失败:服务器响应状态为 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>

似乎与此问题有关的错误:What causes a Failed to execute 'fetch' on 'ServiceWorkerGlobalScope': 'only-if-cached' can be set only with 'same-origin' mode error?

产生此错误的请求是对应用程序的任何首次访问:

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

在应用重新加载时,错误不再重复。

有人可以帮我吗? Service Worker 的safeFetch() 中是否存在错误(可能是为了支持 HashLocationStrategy)?我需要更改配置中的任何内容吗?

【问题讨论】:

标签: angular angular-cli angular5 service-worker angular-service-worker


【解决方案1】:

从后端禁用 ETag 标头暂时解决了这个问题。

【讨论】:

  • 您能否详细说明您的答案,我在哪里可以在 Angular 应用程序中找到此 ETag。
  • 您必须在后端配置中进行。
  • 它对我不起作用。
猜你喜欢
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2020-02-14
  • 2016-11-01
  • 2018-01-29
  • 2018-12-16
相关资源
最近更新 更多