angular - 使用@angular/service-worker 缓存 Google Maps API

标签 angular google-maps google-maps-api-3 service-worker angular-service-worker

我正在从事 Angular 5 项目,并希望通过 @angular/service-worker 包提供 PWA 功能。

我无法缓存和提供 Google Maps API 请求(例如图 block )。 在线时不会缓存响应,因此在离线时也不会提供响应。

我尝试过的:

  • 将 map URL 添加到数据组:没有错误,但也没有缓存,离线时出现以下错误:

    错误错误:未捕获( promise ):事件:{"isTrusted":true}(在 main.bundle.js 中)

  • 将 map URL 添加到 assetGroups installMode: prefetch,我在尝试预取时遇到跨域错误:

    请求中不存在“Access-Control-Allow-Origin” header 资源。产地' http://localhost:8080 ' 因此不允许 使用权。如果不透明响应满足您的需求,请设置请求的模式 设置为“no-cors”以获取禁用 CORS 的资源。

  • 将 map URL 添加到 assetGroups installMode: lazy,我得到的结果与 installMode: prefetch 相同

其余数据缓存和服务良好(来自本地主机的静态数据和来自不同端口上本地主机 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"
        }
    }]
}

如果需要,很乐意提供更多信息。

最佳答案

我也在与 service worker 一起使用谷歌地图,如果我将它插入 "https://maps.googleapis.com/maps/**" at assetGroups -> 网址:

"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",
  "https://maps.googleapis.com/maps/**"
]

关于angular - 使用@angular/service-worker 缓存 Google Maps API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49060286/

相关文章:

html - 启用捏合以在 iframe 内缩放 - Ionic 2 AngularJS 2

angular - Http,你如何处理 Angular 2 中的非文本响应?

java - 无法从抽屉导航中的 Fragment/FragmentActivity 打开 FragmentActivity

javascript - 伊朗的Chrome地理定位

javascript - Google Maps Places API map 未显示

angular - CSS3 动画不适用于 Angular 4

javascript - 带有 Place-Id 的 Google Map API 文件字段

javascript - google地点详情API结果中返回了price_level

javascript - 如何将 domready 事件添加到 infoBubble

angular - 如何使用 Jasmine 在 Angular 中对 HTTP 拦截器进行单元测试