首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角-cli更新服务-未定义错误的工作者id

角-cli更新服务-未定义错误的工作者id
EN

Stack Overflow用户
提问于 2018-05-03 18:14:33
回答 2查看 1.4K关注 0票数 8

我遵循了“角形”的官方指南,并成功地安装了最初的服务人员。接下来,我想尝试更新行为,并获得了一个

TypeError:无法读取未定义的属性'id‘

其中id引用ngsw-worker.js方法中的client.id。

代码语言:javascript
复制
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);
....
}

我所做的步骤是

  1. 注册SW,离线并重新加载(工作),关闭选项卡,但保持窗口打开
  2. app.cmp.html中的更新代码
  3. 重建项目(ng build -prod)
  4. 打开新选项卡和应用程序(可以观察SW更新)
  5. 重新加载应用程序
  6. 错误

我使用的是角-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删除。见回复我到了

此外,它还可以是一个铬虫

EN

回答 2

Stack Overflow用户

发布于 2018-05-07 13:35:05

在我们的例子中,问题在升级到角6.0.0之后得到了解决。如果你的项目可行的话,你应该试一试。

我查看了ngsw-worker.js,它在6.0.0中与5.2.0相比有了很大的变化。

票数 2
EN

Stack Overflow用户

发布于 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版本。不知道问题出在哪里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50161482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档