运行Puppeteer Cluster示例报错:Unable to get browser page
解决puppeteer-cluster报错"Error: Unable to get browser page"
问题核心原因
从调试日志的this.browser.createIncognitoBrowserContext is not a function错误信息可以确定,问题出在puppeteer与puppeteer-cluster版本不兼容,或是你安装的是仅提供核心API的puppeteer-core而非完整的puppeteer包(后者会自动下载浏览器并支持全部上下文相关API)。
可行解决方案
1. 安装兼容版本组合
puppeteer-cluster对puppeteer的版本有明确依赖要求,建议直接安装经过验证的稳定兼容版本:
# 先卸载现有冲突依赖 npm uninstall puppeteer puppeteer-cluster puppeteer-core # 安装最新兼容版本 npm install puppeteer@latest puppeteer-cluster@latest
2. 替换并发模式(降级方案)
如果暂时无法升级版本,可以修改集群配置,使用页面级并发替代上下文级并发,绕过隐身上下文的创建逻辑:
const { Cluster } = require('puppeteer-cluster'); (async () => { const cluster = await Cluster.launch({ concurrency: Cluster.CONCURRENCY_PAGE, // 替换原CONCURRENCY_CONTEXT maxConcurrency: 2, }); await cluster.task(async ({ page, data: url }) => { await page.goto(url); const screen = await page.screenshot(); // 后续处理逻辑 }); cluster.queue('http://www.google.com/'); cluster.queue('http://www.wikipedia.org/'); await cluster.idle(); await cluster.close(); })();
3. 验证修复效果
执行以下步骤确保依赖完全更新:
rm -rf node_modules package-lock.json npm install
之后重新运行代码,检查报错是否消失。
内容的提问来源于stack exchange,提问作者Silvestro De Caro
相关产品推荐
相关产品推荐

