当前位置: 首页 > 知识库问答 >
问题:

更新未定义错误的服务人员ID

司马渝
2023-03-14

我遵循angular的官方指南,成功安装了初始服务人员。接下来,我想尝试一下更新行为,得到了一个

无法读取未定义的属性id

其中as 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);
....
}

我做的步骤是

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

我正在使用angular cli 1.7。4和所有角度库(包括服务人员)都在5.2上。10

编辑1 08.05。2018

github 6上发布了一个问题https://github.com/angular/angular/issues/23742

编辑2 08.05。2018

到目前为止我能发现的是:

ng build--prod不会创建新版本的ngsw worker。js(重新加载新的新版本时,chrome不会显示“等待激活”)。当我在之前关闭或不关闭选项卡的情况下重新加载时,会出现错误。

当我手动向ngsw-worker.js添加一些东西(比如console.log)时,通常的生命周期就开始了,旧的服务工作者被“新”工作者所取代。

在激活之前重新加载时,会出现相同的错误。否则它会起作用。。。

此外,尝试使用angular的Fail-safe(删除或重命名ngsw配置)删除服务工作者会导致生成错误。

预计将找到ngsw配置。json配置文件位于/Users/hanche/Desktop/Development/playerly/toggl2文件夹中。在您的系统中提供一个或禁用服务工作者。json配置文件。

编辑3

如果从2018年5月1日开始的拉请求被接受,这个问题应该得到解决。

同时,您可以通过删除ngsw自动注销serviceworker。json来自dist/文件夹,而不是ngsw配置。json,如故障保护部分所述。看我在这里得到的答复。

此外,它也可能是铬虫

共有2个答案

贺华容
2023-03-14

我们可以通过降级服务来解决这个错误。工人5.2。10至5.2。0“@angular/service worker”:“5.2.0”,

使现代化

在第二次部署之后,我们遇到了相同的错误。现在我们已经注销了chrome中的所有服务人员(chrome://serviceworker-internals/)现在它似乎与5.2版一起工作。10也是。不知道问题出在哪里。

颜河
2023-03-14

在我们的例子中,问题在升级到angular 6.0后得到了解决。0.如果你的项目有可能,你应该试一试。

我看着ngsw的工人。js,它在6.0中发生了很大的变化。0与(在我们的案例中)5.2相比。0

 类似资料:
  • 我一直在阅读《html5rocks服务工作者简介》一文,并创建了一个基本的服务工作者,它可以缓存页面、JS和CSS,并按预期工作: 当我对CSS进行更改时,由于服务人员正在从缓存中正确返回CSS,因此不会拾取此更改。 我陷入困境的地方是,如果我要更改HTML、JS或CSS,我如何确保服务人员可以从服务器加载较新版本,而不是从缓存加载?我曾尝试在CSS导入上使用版本戳,但似乎不起作用。

  • 情况: 在我的网站上。com/game,我在 在我的服务器上,的最大值为。 问题: 。 问题是,每当用户访问,它显示空页面,不再执行任何操作。我无法让客户端获取新的。 如何让客户端获取新的?

  • 我创建了react应用程序,它使用股票服务人员缓存文件。我希望该应用程序是一个可下载的PWA,但每当我更新(与heroku) 我是否错过了文档中的一些配置,以便在其为PWA时启用自动更新?或者我可以做些什么来在更新时强制刷新。(我读过这是一个糟糕的UI,但我对此没有意见) 注意:从PC上的浏览器查看时,它会按预期工作。(选项卡全部关闭时更新)

  • 带有服务工作者的网站,托管https://121eddie.github.io/并在Chrome 66.0中运行。3359.181 /索引。html在每次加载时正确跟踪以下注册 }); 第一次运行时,/serviceWorker。js执行“激活”事件,正确获取缓存名称并缓存文件 在第二次运行时,不会触发“激活”(没有日志跟踪,没有获取)。 在第三次运行中,甚至不再触发“抓取”。这意味着脱机请求不被

  • 如何自定义@角/服务工作者?我知道在npm_modules文件夹内修改是不合适的。我遇到了一个教程,作者创建了一个额外的2 js文件。其中一个文件包含服务工作人员代码,而另一个文件包含导入ngsw-worker.js文件和自定义服务工作人员文件的“导入脚本()”。它工作正常,自定义服务辅助角色监听安装事件,但是当涉及到读取事件时,它不会通过这个读取事件监听器。我没有得到这个函数里面的控制台。我不知

  • 有一个问题,我们的一些用户有一个错误的服务工作者坐在他们的Facebook浏览器从我们的网站。 问题:Facebook App用户在访问我们在FB上共享的页面时,会在FB浏览器上看到我们的“您离线页面”。 错误似乎是旧版本的Google Workbox(3.6.1)使用Chrome75自动返回FB应用程序中的您离线页面。更新Workbox修复了它。 对Workbox的引用在service work