为什么使用puppeteer-stream时Chromium无法以headless模式启动
问题原因
puppeteer-stream库的默认配置覆盖了你传入的headless: true参数:为了规避旧版Chromium无头模式对音视频捕获、页面渲染能力的兼容性问题,该库早期版本内部默认强制禁用无头模式,会忽略用户传入的headless配置项,始终启动有头浏览器。- 如果你使用的是V19及以上版本的Puppeteer,旧写法
headless: true对应的是旧版无头模式,本身对媒体流捕获的支持不完善,也可能导致库强制绕过该配置启动有头模式。
解决方法
方案1:指定新版无头模式(推荐)
Puppeteer V19+推出的新版无头模式headless: 'new'和普通有头模式的功能几乎完全一致,支持音视频捕获,你可以强制传入该参数覆盖库的默认配置:
const browser = await launch({ headless: 'new', // 强制给Chromium传递新版无头参数,覆盖库的默认配置 args: ['--headless=new'] });
方案2:手动忽略库的默认禁用无头参数
如果方案1不生效,可通过ignoreDefaultArgs配置主动过滤掉库默认注入的禁用无头参数:
const browser = await launch({ headless: 'new', // 忽略库默认传入的禁用无头参数 ignoreDefaultArgs: ['--headless=false'], args: ['--headless=new', '--no-sandbox', '--disable-gpu'] });
如果修改后依然有问题,可将puppeteer和puppeteer-stream升级到最新稳定版后再测试。
内容的提问来源于stack exchange,提问作者Thomas Carlton
相关产品推荐
相关产品推荐

