我正在开发一个 Angular 5 项目,并希望通过 @angular/service-worker 包提供 PWA 功能。
我无法缓存和提供 Google Maps API 请求(例如图块)。在线时不会缓存响应,因此离线时也不会提供响应。
我尝试了什么:
将地图 URL 添加到数据组:没有错误,但也没有缓存,离线时我收到以下错误:
错误错误:未捕获(承诺):事件:{“isTrusted”:true}(在main.bundle.js中)
将 Maps URL 添加到assetGroups installMode: prefetch,尝试预取时出现跨域错误:
请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“ http://localhost:8080 ”。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
将 Maps URL 添加到assetGroups installMode:lazy,我得到与 installMode:prefetch 相同的结果
其余数据缓存并提供良好的服务(来自 localhost 的静态数据和来自不同端口上的 localhost API 端点的 json)。
我的 ngsw-config.json 看起来像这样:非常感谢任何指针。
{
"index": "/index.html",
"assetGroups": [{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.png",
"/index.html"
],
"versionedFiles": [
"/*.bundle.css",
"/*.bundle.js",
"/*.chunk.js"
],
"urls": [
"https://fonts.googleapis.com/css?family=Roboto:300,400,500,700",
"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2",
"https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}],
"dataGroups": [{
"name": "from-api",
"urls": [
"/api/restaurants",
"/img/**",
"/icons/**",
"https://maps.googleapis.com/maps/**"
],
"cacheConfig": {
"maxSize": 100,
"maxAge": "1d",
"timeout?": "3s"
}
}]
}
如果需要,很乐意提供更多信息。