我遵循了angular的官方指南,并成功安装了初始服务人员。接下来,我想试用一下更新行为,并得到一个
其中,在ngsw-worker.js中的方法中,id是指client.id
async updateClient(client) {
// Figure out which version the client is on. If it's not on the latest,
// it needs to be moved.
const existing = this.clientVersionMap.get(client.id);
....
}
我做的步骤是
我正在使用angular-cli 1.7.4,所有的 Angular 库(包括service-worker)都在5.2.10上。
编辑1 08.05.2018
在github上的angular-cli 6上发布了一个问题
https://github.com/angular/angular/issues/23742
编辑2 08.05.2018
到目前为止,我能找到的是:
ng build --prod不会创建ngsw-worker.js的新版本(重新加载新的新鲜版本时,chrome不会显示“等待激活”)。无论是否关闭选项卡,我重新加载时,都会出现错误。
当我手动将某些内容添加到ngsw-worker.js(例如console.log)时,通常的生命周期就会开始,旧的服务 worker 正在被"new"的 worker 代替。
当我在完成激活之前重新加载时,会出现相同的错误。否则它会起作用...
此外,尝试使用angular的Fail-safe删除服务 worker (删除或重命名ngsw-config)会导致生成错误。
编辑3和'Solution' 09.05.2018
如果从2018年5月1日开始接受此Pull Request,应该可以解决此问题。
同时,您可以通过从dist/文件夹中删除ngsw.json和NOT ngsw-config.json来自动注销服务工作人员,如故障安全部分所述。参见reply I got here。
此外,它也可以是chrome bug
最佳答案
在我们的情况下,升级到 Angular 为6.0.0后,此问题已解决。如果您的项目可行,则应尝试一下。
我查看了ngsw-worker.js,与(在我们的示例中)5.2.0相比,它在6.0.0中发生了很大变化。
关于angular-cli更新服务 worker 编号(未定义错误),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50161482/