【发布时间】:2018-07-11 22:45:16
【问题描述】:
在以前版本的 Angular 服务工作者实现中,配置选项之一是 "routing"。这可以在这个unanswered SO question 中看到,在这个Angular CLI issue 中被引用,剩下的最好的文档似乎是blog post by Stephen Fluin(在Angular 团队中),以及来自Alex Rickabaugh 的I/O talk(来自Google )。
使用 Angular 5,ServiceWorkerModule 已经很好地构建了,现在可以使用ngsw-config.json 文件处理大部分配置。但是,在angular.io guide 或documentation 中的任何位置都不再提及如何处理路由重定向。所以我最终遇到了以下问题:当我访问我的应用程序并离线时,我直接访问它时仍然可以访问应用程序:https://jackkoppa.github.io/cityaq-sw-issue。但是,在加载时,应用程序会重定向到 search 路由,并且大多数用户会尝试从像 https://jackkoppa.github.io/cityaq-sw-issue/search?cities=Shanghai 这样的 URL 加载(为简单起见,我现在只谈论 Chrome 桌面和移动设备,以及隐身模式可能的话)。
当您尝试在离线状态下访问该 URL 时,您会立即收到 504 - Gateway Timeout。发生这种情况是因为 service worker 只缓存了索引,并且不知道其他路由应该重定向到索引以便它可以加载。我相信 Angular 服务工作者实现的先前迭代可以通过设置重定向到给定路由的索引来处理这种情况。 有没有办法在当前的 Angular 5+ ngsw-config.json 或生成的 ngsw.json 文件中处理此重定向?除此之外,应该如何在单独的服务工作者 JS 文件中处理解决方法?
【问题讨论】:
-
我真的很想知道这个问题的答案
-
@stephenagwu 同意了。我无法在任何地方找到文档,这让我觉得我可能会在 Angular repo 上将其写成一个问题。不过,希望在这之前有人对服务人员有更好的了解,尽管
-
当我第一次注意到这种行为时,我打开了一个问题。就像你说的,它在 v5 之前运行良好。但是,对于 SW,我不确定问题出在 Angular 还是 CLI(构建 ngsw-worker.js)上。我已经在 Angular repo github.com/angular/angular/issues/21636 上打开了它
-
我创建了a repo,它与@MrCroft 在上面链接的问题中找到的最小复制步骤相匹配。仍在尝试深入了解
ngsw-worker.js在获取过程中失败的位置。 -
将让赏金到期,因为感觉我们对 Angular 团队的期望没有任何完整的答案。希望我可以继续处理我的回答中描述的拉取请求,或者有更多知识的人偶然发现这个
标签: angular angular-cli angular-routing service-worker angular-service-worker