workbox:动态设置调试模式

时间:2018-06-11 10:10:11

标签: service-worker workbox

受影响的图书馆: workbox.setConfig

浏览器&平台: "所有浏览器"。*

问题或功能请求说明: 我打算设置调试模式:true 这是我正在遵循的流程:

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

    有没有人知道这个

    的任何解决方法

1 个答案:

答案 0 :(得分:6)

需要在服务工作者启动时同步执行各种workbox.*方法,以便在事件开始触发之前加载所需的运行时捆绑包并建立正确的事件侦听器。在初始化Workbox之前,您无法执行任何异步操作,例如从Cache Storage 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检测到它在debug: true上运行时会自动切换到localhost模式,否则默认情况下会以生产模式运行。