在NestJS中使用Playwright打开网站时出现ERR_HTTP2_PROTOCOL_ERROR错误
解决Playwright中net::ERR_HTTP2_PROTOCOL_ERROR的方案
以下是针对你遇到的问题的几种可行解决方法:
强制禁用HTTP/2协议
部分服务器与Playwright默认的HTTP/2实现存在兼容性问题,直接关闭HTTP/2通常能解决这类错误。可以通过两种方式设置:// 方式1:启动浏览器时添加禁用参数 const browser = await chromium.launch({ headless: false, args: [ '--disable-web-security', '--disable-http2' // 新增禁用HTTP/2的参数 ], }); // 方式2:创建上下文时配置HTTP协议 const browser = await chromium.launch({ headless: false }); const context = await browser.newContext({ http2: false, // 强制关闭HTTP/2 ignoreHTTPSErrors: true // 若目标站点有证书问题可一并添加 }); const page = await context.newPage(); await page.goto('https://example.com');模拟真实浏览器的User-Agent
部分服务器会对非标准UA的请求返回异常,设置一个主流浏览器的UA字符串:const page = await browser.newPage({ userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' });调整页面加载的超时与等待策略
错误可能因加载超时引发,延长超时时间并设置更合理的等待条件:await page.goto('https://example.com', { timeout: 60000, // 设置60秒超时 waitUntil: 'networkidle' // 等待网络空闲后确认加载完成 });检查浏览器版本兼容性
Playwright 1.36.2对应的Chrome版本可能与目标服务器的HTTP/2实现不匹配,可尝试升级Playwright到最新稳定版,或指定兼容的浏览器版本:# 终端执行:安装指定版本的Chromium npx playwright install chromium@115.0.5790.170
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

