更换为笔记本后运行Puppeteer报UnhandledPromiseRejectionWarning连接超时错误
核心报错原因
Puppeteer无法在默认30秒超时时间内拉起匹配版本的Chrome浏览器,更换设备后环境变动是直接诱因,报错信息明确要求的Chrome版本为r901912。
可行解决方案
- 修复浏览器版本不匹配问题
新设备大概率未安装对应版本的Chromium,先删除项目node_modules目录,重新执行npm install,安装过程不要跳过Chromium自动下载步骤。如果网络问题无法自动下载,可手动下载r901912版本Chromium,启动时手动指定路径:const browser = await puppeteer.launch({ executablePath: '替换为你本地Chromium的实际文件路径' }) - 修复WSL环境依赖缺失问题
从报错路径/mnt/c/可知你在WSL环境中运行代码,WSL默认缺少Chromium运行需要的图形依赖,执行以下命令安装依赖:sudo apt install libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2
启动时添加无沙箱、无头模式参数避免图形界面要求:const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'] }) - 延长启动超时阈值
如果新设备性能较低,30秒不足以完成浏览器启动,可手动调整超时时间:const browser = await puppeteer.launch({ timeout: 60000 // 超时时间调整为60秒 }) - 补充异步异常捕获
后续的未处理Promise报错是因为代码未加异常捕获逻辑,补全后可更方便定位问题:puppeteer.launch().then(async browser => { // 此处写入你的业务逻辑 }).catch(err => { console.error('浏览器启动失败:', err) })
内容的提问来源于stack exchange,提问作者Trent325
相关产品推荐
相关产品推荐

