我正在使用 Angular-CLI 1.6.6
, @angular/service-worker 5.2.5
, 在我们的 Angular 5.2.5
应用程序中。在本地的lite-server上以及生产服务器上,一切工作正常,除了一个错误信息在我们的生产环境中弹出:
Failed to load resource: the server responded with a status of 504 (Gateway Timeout)
查看 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 中记录错误(console logging err) 会输出以下错误:
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]
...
在应用程序重新加载时,错误不会重复出现。请问有人可以帮忙吗?是不是safeFetch()
中的一个错误(可能是为了支持HashLocationStrategy)?我需要更改我的配置吗?