2

我的目标是确保我有一个稳定的过程来处理扩展更新。我即将发布一个新的扩展,并注意到后台服务人员已经过时了。以下是详细信息:

我测试这个生命周期的方法是生成一个新的构建工件并将其拖放到页面chrome://extensions中。我希望这是测试这个生命周期的方法。但如果不是,我很乐意听到替代方案。

拖放后,我打开后台控制台以检查正确的版本,但似乎落后了。解决此问题的唯一方法是完全删除扩展程序并将其重新加载,这给我的印象是普通用户会遇到同样的问题。

下面的屏幕截图描述了这种情况:

  1. 0.3.33当前安装的版本
  2. 拖放新的构建版本0.3.34
  3. 拖放成功后,通知版本与版本滞后0.3.31
  4. 但是chrome.runtime.onInstall发布准确输出了之前的版本

旧版截图

此外,我查看了解压后的扩展目录,编译后的代码与预期版本一致

验证卸载的源目录

到目前为止,我所做的故障排除工作是完全删除扩展。它确实在一系列更新后成功更新manifest.version,但随后变得陈旧。需要明确的是,我所做的只是更新文件的version属性,manifest.json这似乎导致了这个问题

任何帮助将不胜感激。同时,我将重温服务工作者的架构,因为它与 chrome manifest v3 相关。谢谢!


编辑 - 2021 年 8 月 22 日,星期日:

最新动态:首先感谢woxxom 提供更多细节来调试。

我创建了一个示例项目来演示可重现步骤的问题。希望这有助于确定问题,但它似乎确实指向 Chrome 错误,所以我也会在 crbug.com 上报告它

Github 项目:https ://github.com/miguelespinoza/-v3-service-worker-update

最终,我发现加载 iframe 会导致 service worker 生命周期变得“陈旧”。

看着chrome://serviceworker-internals/?devtools,我注意到扩展程序包括两个工作人员,这看起来很奇怪,因为我想应该只存在一个,一个在后台。这可能没有任何意义,但也想分享。一名“活跃工人”和一名“等待工人”

在此处输入图像描述

重要提示:Service Worker 后台事件停止工作。就我而言,chrome.commands.onCommandchrome.action.onClicked

4

0 回答 0