【发布时间】: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>
产生此错误的请求是对应用程序的任何首次访问:
https://example.com/test/#/connect
https://example.com/test/#/map?token=[accestoken]
...
在应用重新加载时,错误不再重复。
有人可以帮我吗? Service Worker 的safeFetch() 中是否存在错误(可能是为了支持 HashLocationStrategy)?我需要更改配置中的任何内容吗?
【问题讨论】:
-
似乎很多人都面临这个问题。 github.com/angular/angular/issues/20756 github.com/angular/angular/issues/20970 等等。并不是说它有任何帮助,但似乎它正在根据角度服务工作者项目进行查看:github.com/angular/angular/projects/13
-
请提供完整的源代码(或者更好的是,请stackblitz :)
-
您能否提供网络选项卡中的屏幕截图,显示 504?
-
在 the issue 上完成了一些工作。 @tobik 这仍然是个问题吗?
标签: angular angular-cli angular5 service-worker angular-service-worker