我遵循了“角形”的官方指南,并成功地安装了最初的服务人员。接下来,我想尝试更新行为,并获得了一个
TypeError:无法读取未定义的属性'id‘
其中id引用ngsw-worker.js方法中的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);
....
}我所做的步骤是
我使用的是角-cli 1.7.4,包括服务工作者在内的所有角库都在5.2.10上。
编辑1 08.05.2018
github上有一个关于角-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)添加一些东西时,通常的生命周期就会启动,旧的服务工作者将被“新的”服务工作者替换。
在激活之前重新加载时,也会出现相同的错误。否则就成功了..。
此外,试图使用角的故障安全(删除或重命名ngsw-config)来删除服务工作人员会导致生成错误。
期望在/Users/hanche/Desktop/Development/playground/toggl2文件夹中找到ngsw-config.json配置文件。在angular.json配置文件中提供一个或禁用服务工作人员。
编辑3&“解决方案” 09.05.2018
如果2018年5月1日开始的拉请求被接受的话,这个问题就应该得到解决。
同时,您可以通过从dist/文件夹中删除ngsw.json来自动注销serviceworker,而不是像失败安全部分中描述的那样将ngsw-config.json删除。见回复我到了。
此外,它还可以是一个铬虫
发布于 2018-05-07 13:35:05
在我们的例子中,问题在升级到角6.0.0之后得到了解决。如果你的项目可行的话,你应该试一试。
我查看了ngsw-worker.js,它在6.0.0中与5.2.0相比有了很大的变化。
发布于 2018-05-09 07:55:54
我们可以通过将service.worker 5.2.10降级为5.2.0 "@angular/service-worker": "5.2.0",来解决此错误
更新
在第二次部署之后,我们遇到了相同的错误。现在,我们已经在chrome (chrome://serviceworker/)中取消了所有服务工作人员的注册,现在它似乎也适用于5.2.10版本。不知道问题出在哪里。
https://stackoverflow.com/questions/50161482
复制相似问题