我正在远程运行一系列网络测试,在 Ubuntu 机器上使用 Screen,在 Puppeteer 浏览器实例上运行 Lighthouse。直到 2022 年 11 月我上次运行测试时,当前设置一直运行良好,但是当我几天前再次尝试时,它开始失败并出现以下错误;
TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r901912 is guaranteed to work.
at Timeout.onTimeout (/home/jin/github/policy-driven-interventions/tools/web_crawler/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:208:20)
at listOnTimeout (node:internal/timers:557:17)
at processTimers (node:internal/timers:500:7
DEBUG="puppeteer:*" 显示浏览器从未启动。
我立即尝试使用相同配置的无头模式,效果很好。但我需要有头脑的测试,所以这对我来说不是一个选择。
显示器可能和电脑断开了(我不在机器旁边,暂时无法确认),我猜这可能与故障有关。然而,谷歌浏览器在同一个屏幕会话上没有任何问题地启动(这个屏幕会话是在连接显示器时在远程机器终端上启动的)。
在 Screen 会话之外,没有显示,测试失败并显示预期的不同错误消息(意味着不同的事情导致 Screen 会话失败;
Error: Failed to launch the browser process!
[13675:13675:0402/034541.040435:ERROR:ozone_platform_x11.cc(247)] Missing X server or $DISPLAY
[13675:13675:0402/034541.040531:ERROR:env.cc(226)] The platform failed to initialize. Exiting.
TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
at onClose (/home/jin/github/policy-driven-interventions/tools/web_crawler/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:197:20)
at ChildProcess.<anonymous> (/home/jin/github/policy-driven-interventions/tools/web_crawler/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:188:79)
at ChildProcess.emit (node:events:402:35)
at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
机器的内存不会成为问题,因为自测试开始以来它一直没有改变,而且它的使用率很低(6%)。
我的测试在本地 Mac 上使用完全相同的代码在 headful Puppeteer 上运行良好,所以我想我的代码没问题,除非有任何与 Linux 系统特别相关的问题。
问题的根源是什么?任何人有任何见解?
简而言之,我怀疑以下内容;