Puppeteer 19.7.6版本headless:false模式无法打开浏览器求助
Puppeteer 19.7.6 headless:false模式无法打开浏览器的解决方案
以下是针对该问题的可行排查和解决步骤:
1. 验证Chrome版本兼容性
Puppeteer与内置Chrome版本强绑定,19.7.6版本对应Chrome 111.0.5563.147。若本地Chrome版本差异过大,可能导致启动失败。执行以下命令重新安装Puppeteer,确保下载匹配的Chrome包:
npm uninstall puppeteer && npm install puppeteer@19.7.6
2. 调整启动参数
- 解决视图冲突:
--start-maximized与defaultViewport可能存在冲突,尝试将defaultViewport设为null再测试:const browser = await puppeteer.launch({ headless: false, devtools: true, defaultViewport: null, args: ['--start-maximized', '--no-sandbox', '--disable-setuid-sandbox'] }); - 添加兼容性参数:部分环境下需补充参数修复启动问题,添加
--disable-gpu、--disable-dev-shm-usage到args中:args: ['--start-maximized', '--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu', '--disable-dev-shm-usage']
3. 清理残留进程与检查权限
- 关闭所有残留的Chrome/Puppeteer进程:Windows用任务管理器结束相关进程;Linux/macOS执行
ps aux | grep chrome找到进程后用kill -9 [进程ID]终止。 - 避免用root用户运行脚本(Linux/macOS),普通用户权限不足也会导致浏览器无法启动。
4. 查看启动日志定位问题
添加dumpio: true参数,将浏览器启动日志输出到控制台,根据日志排查具体错误:
const browser = await puppeteer.launch({ headless: false, devtools: true, defaultViewport: { width: 1920, height: 1080 }, args: ['--start-maximized', '--no-sandbox', '--disable-setuid-sandbox'], dumpio: true });
- 若日志提示缺少系统依赖(Linux环境),执行以下命令安装基础依赖:
sudo apt-get install libnss3-dev libatk1.0-0 libcups2 libxkbcommon-x11-0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2
5. 尝试版本切换
若以上方法无效,尝试降级到19.7.5或升级到兼容版本(如20.0.0),排查是否为版本自身bug:
# 降级版本 npm install puppeteer@19.7.5 # 升级版本 npm install puppeteer@20.0.0
内容的提问来源于stack exchange,提问作者Kaushal Nimavat
相关产品推荐
相关产品推荐

