我有一个Angular PWA。在我从Angular 5.0升级到7.2之前,它的服务工作程序完美运行。
升级后,在/ngsw/state
中出现以下错误
Driver state: SAFE_MODE (Initialization failed due to error: Invariant violated (initialize): latest hash null has no known
manifest initialize/<@https://{{domain}}.com/ngsw-worker.js:2227:27
fulfilled@https://{{domain}}.com/ngsw-worker.js:1772:52 ) Latest
manifest hash: none Last update check: never
应用程序背景
- Angular 版本为 7.2.0
- Service worker 版本为 7.2.0
- 我正在使用 SwUpdate 服务手动检查更新。
检查更新的代码
if (this.updates.isEnabled) {
const appIsStable$ = this.appRef.isStable.pipe(first(isStable => isStable === true));
const every21600Ms$ = interval(6 * 60 * 60);
const every21600MsOnceAppIsStable$ = concat(appIsStable$, every21600Ms$);
// poll the service worker to check for updates
every21600MsOnceAppIsStable$.subscribe(() =>
this.updates.checkForUpdate()
);
}
我的研究和故障排除步骤:
在 Chrome 中
- 服务工作者已经注册,没有任何错误
- 我查看了网络选项卡,并发现服务工作者从未下载“ngsw.json”。当应用程序在 Angular 5.0 时,我曾看到过“ngsw.json”被下载。
- 我发现同样的问题已经在这里报告。但我没有看到任何适当的解决方案。
- 我尝试选择“重新加载时更新”,这暂时解决了问题。但是当我取消选择时,相同的错误再次出现。
在 Microsoft Edge 中
- 令人惊讶的是,在升级后,一切都在 Edge 中正常工作。
我的想法和期望
- 由于应用程序在 MS Edge 中运行良好,我怀疑服务工作者配置或我轮询更新的方式存在问题。
- 我的期望是在/ngsw/state中看到驱动器状态为正常。