【问题标题】:How can I forward service worker `console.log`s to stdout in the terminal?如何将 service worker `console.log`s 转发到终端中的标准输出?
【发布时间】:2022-11-10 17:56:19
【问题描述】:

在浏览器扩展的 Puppeteer 自动化中调试服务工作人员有相当大的困难。有没有办法将服务工作者(使用 manifest v3,这就是为什么我的扩展程序有一个服务工作者)转发到终端的标准输出,以便我在运行脚本时可以看到一些日志?

【问题讨论】:

    标签: node.js puppeteer service-worker


    【解决方案1】:

    我和你有同样的需求,实际上它还没有在 Puppeteer 中实现。

    正如您所看到的here,有一个TODO 说“让工作人员发送他们的控制台日志”,并带有一个noop (() => {}) 用于回调Runtime.consoleAPICalled 事件。这个 TODO 是在 2019 年通过this PR 引入的。

    目前,事件is listened to,但没有作为 Puppeteer 事件重新发出。所以你必须手动完成:

    const browser = await puppeteer.launch(...)
    
    const serviceWorkerTarget = await this.browser.waitForTarget(
      (target) => target.type() === 'service_worker'
    )
    
    const serviceWorker = await serviceWorkerTarget.worker()
    serviceWorker._client.on('Runtime.consoleAPICalled', (event) => {
      console.log(event)
    })
    

    这将记录以下内容:

    {
      type: 'log',
      args: [
        {
          type: 'string',
          value: 'Hello World'
        }
      ],
      executionContextId: 1,
      timestamp: 42.000,
      stackTrace: { callFrames: [ [Object] ] }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多