如何在WSL2上顺利运行Puppeteer?遇连接超时错误求助
在WSL2上运行Puppeteer的简便解决方案
以下是针对你遇到的超时问题的具体解决步骤,均为WSL2环境下验证有效的方法:
安装Chrome运行依赖
WSL2的Linux发行版默认缺少Chrome/Chromium运行必需的系统库,这是启动超时的常见诱因。以Ubuntu/Debian为例,执行以下命令安装依赖:sudo apt update && sudo apt install -y libnss3 libatk-bridge2.0-0 libdrm-dev libxkbcommon-dev libgbm-dev libasound-dev libatspi2.0-0 libxshmfence-dev让Puppeteer自动管理Chrome实例
不要手动指定executablePath,避免版本不兼容问题。确保安装Puppeteer时未跳过Chrome下载,执行以下命令重新安装:rm -rf node_modules package-lock.json npm install puppeteer安装过程中Puppeteer会自动下载匹配版本的Chrome(即你看到的r1022525),无需手动下载其他浏览器。
添加适配WSL2的Chrome启动参数
启动Puppeteer时必须添加无头环境的必要参数,示例代码如下:const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: 'new', // 新版无头模式兼容性更强 args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', // 解决WSL共享内存不足导致的超时 '--disable-gpu' ] }); // 后续业务代码... await browser.close(); })();其中
--disable-dev-shm-usage是解决WSL2中Chrome因内存限制超时的关键参数。检查权限与网络状态
- 确保当前用户对
node_modules/puppeteer/.local-chromium目录有读写权限,若权限不足可执行:sudo chown -R $USER:$USER node_modules - 确认WSL2能正常访问外网,否则Puppeteer无法下载匹配的Chrome版本,可通过
ping google.com测试网络连通性。
- 确保当前用户对
验证版本匹配性
进入node_modules/puppeteer/lib/cjs/puppeteer/revisions.js文件,确认chrome字段对应的版本确实是r1022525,同时检查node_modules/puppeteer/.local-chromium/linux-1022525目录是否存在且包含完整的Chrome二进制文件。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

