工作箱:动态设置调试模式

workbox: Set debug mode dynamically

受影响的库: workbox.setConfig

浏览器和平台: "all browsers".*

问题或功能请求描述: 我打算设置调试模式:true 这是我正在关注的过程:

  1. 使用 PWA 存储模式值:true/false 在缓存中
  2. 打开缓存并使用存储的变量设置调试值。
  3. 问题是一切都是异步的,安装事件在 workbox.setconfig
  4. 之前被调用

有谁知道解决这个问题的方法

各种 workbox.* 方法需要在服务工作者启动时同步执行,以便加载所需的 运行 时间包并在事件开始触发之前建立适当的事件侦听器。在初始化 Workbox 之前,您将无法执行任何异步操作,例如从缓存存储 API 或 IndexedDB 中读取数据。

我不知道在切换 Workbox 是否处于调试模式方面需要多大的灵活性,但以下内容可能会有所帮助。它允许您使用 URL 查询参数来确定给定的服务工作者注册是否 trigger Workbox's debug mode

// Inside your service worker,
// before you make any other calls to workbox.* methods.

const url = new URL(location.href);
const debug = url.searchParams.has('debug');
workbox.setConfig({debug});

然后当您注册时:

// To enable debugging:
navigator.serviceWorker.register('/service-worker.js?debug');
// To run without debugging:
// navigator.serviceWorker.register('/service-worker.js');

您可能已经知道这一点,但是当 Workbox 在 localhost 上检测到 运行 时会自动切换到 debug: true 模式,而在生产模式下 运行否则默认。