【问题标题】:Debugging service worker 'trying to install' in Chrome在 Chrome 中调试服务工作者“尝试安装”
【发布时间】:2020-09-04 07:21:07
【问题描述】:

我认为http://www.espruino.com/ide/serviceworker.js 的页面http://www.espruino.com/ide 是一个非常标准的服务人员

但是最近,当我在 Chrome 开发控制台中为 Service Worker 设置了“重新加载时更新”时,该网站的加载指示器保持打开状态,并且状态显示新的 Service Worker 为“正在尝试安装”。

最终,我看到新服务人员的红色“x”和带有链接的“1”,但这没有任何作用或提供任何工具提示。单击serviceworker.js 将我带到源文件,第一行以黄色突出显示,但没有突出显示错误。

我已经按照惯例检查了 service worker 引用的所有文件是否存在并且确实存在,但我不知道接下来要看什么。

有人知道如何进一步调试吗?

谢谢!

【问题讨论】:

    标签: google-chrome google-chrome-devtools service-worker


    【解决方案1】:

    我正在使用 Chrome 测试版。

    我更新到最新版本,神奇地一切正常。所以我猜这是 Chrome 或 devtools 中的错误,而不是我的代码。

    【讨论】:

    • 拯救了我的一天。完美的答案。
    • 这发生在最新的稳定版 chrome 上(版本 85.0.4183.83(官方构建)(64 位))
    • 可以确认我在 Chrome 84.0.4147.135 和 Chrome 85.0.4183.83 中也看到了这个
    • Chrome 84.0.4147.135 出现同样的问题 - 刚刚更新到 85.0.4183.83 (Win10) 但根本没有帮助。有人知道有关此问题的更多信息吗?
    【解决方案2】:

    对于那些使用最新版本的 Chrome 遇到此问题的人,我能够通过将每个资源缓存在其自己的缓存中来修复它。只需为您要存储的每个文件调用caches.open。您可以这样做,因为caches.match 会自动在您的缓存海洋中找到该文件。

    举个乱七八糟的例子:

    self.addEventListener('install', event => {
     event.waitUntil(swpromise);
     var swpromise = new Promise(function(resolve,reject) {
    
     for (var i = 0; i < resources_array.length; i++) {
       addToCache(i,resources_array[i]);
     }
    
     function addToCache(index,url) {
       caches.open(version+"-"+index).then(cache => cache.addAll([url])).then(function() {cacheDone()});
     }
    
     var havedone = 0;
     function cacheDone() {
      havedone++;
      if (havedone == resources_array.length) {
       resolve();
      }
     }
    })
    

    我使用文件的版本号和索引作为每个文件的缓存键。然后,我使用类似于以下代码的内容在激活服务工作者时删除所有旧缓存:

    addEventListener('activate', e => {
     e.waitUntil(caches.keys().then(keys => {
      return Promise.all(keys.map(key => {
        if (key.indexOf(version+"-") == -1) return caches.delete(key);
      }));
     }));
    });
    

    希望这对你有用,对我来说确实如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2017-01-20
      • 2021-11-23
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      相关资源
      最近更新 更多