如何解决GitHub Workflows中的Lighthouse exit code 1错误?
GitHub Workflows中Lighthouse无法连接Chrome导致exit code 1的解决办法
问题背景
在GitHub Workflows执行lhci autorun --upload.target=temporary-public-storage --collect.staticDistDir=.时,Lighthouse以exit code 1退出,报错显示无法连接Chrome。已排查HTML/CSS语法错误、压缩图片优化加载,但页面仍加载缓慢无法访问。
报错日志
lhci autorun --upload.target=temporary-public-storage --collect.staticDistDir=. shell: /usr/bin/bash -e {0} env: FORCE_COLOR: 1 > ✅ .lighthouseci/ directory writable Configuration file not found Chrome installation found Healthcheck passed! Started a web server on port 34123... Running Lighthouse 3 time(s) on http://localhost:34123/index.html Error: Lighthouse failed with exit code 1 Run #1...failed! at ChildProcess.<anonymous> (/opt/hostedtoolcache/node/18.14.1/x64/lib/node_modules/@lhci/cli/src/collect/node-runner.js:120:21) at ChildProcess.emit (node:events:513:28) at ChildProcess._handle.onexit (node:internal/child_process:291:12) Mon, 27 Feb 2023 14:49:25 GMT ChromeLauncher Waiting for browser. Mon, 27 Feb 2023 14:49:25 GMT ChromeLauncher Waiting for browser... Mon, 27 Feb 2023 14:49:26 GMT ChromeLauncher Waiting for browser..... Mon, 27 Feb 2023 14:49:26 GMT ChromeLauncher Waiting for browser....... Mon, 27 Feb 2023 14:49:27 GMT ChromeLauncher Waiting for browser......... Mon, 27 Feb 2023 14:49:27 GMT ChromeLauncher Waiting for browser........... Mon, 27 Feb 2023 14:49:28 GMT ChromeLauncher Waiting for browser............. Mon, 27 Feb 2023 14:49:28 GMT ChromeLauncher Waiting for browser............... Mon, 27 Feb 2023 14:49:29 GMT ChromeLauncher Waiting for browser................. Mon, 27 Feb 2023 14:49:29 GMT ChromeLauncher Waiting for browser................... Mon, 27 Feb 2023 14:49:30 GMT ChromeLauncher Waiting for browser..................... Mon, 27 Feb 2023 14:49:30 GMT ChromeLauncher Waiting for browser....................... Mon, 27 Feb 2023 14:49:31 GMT ChromeLauncher Waiting for browser......................... Mon, 27 Feb 2023 14:49:31 GMT ChromeLauncher Waiting for browser........................... Mon, 27 Feb 2023 14:49:32 GMT ChromeLauncher Waiting for browser............................. Mon, 27 Feb 2023 14:49:32 GMT ChromeLauncher Waiting for browser............................... Mon, 27 Feb 2023 14:49:33 GMT ChromeLauncher Waiting for browser................................. Mon, 27 Feb 2023 14:49:33 GMT ChromeLauncher Waiting for browser................................... Mon, 27 Feb 2023 14:49:34 GMT ChromeLauncher Waiting for browser..................................... Mon, 27 Feb 2023 14:49:34 GMT ChromeLauncher Waiting for browser....................................... Mon, 27 Feb 2023 14:49:35 GMT ChromeLauncher Waiting for browser......................................... Mon, 27 Feb 2023 14:49:35 GMT ChromeLauncher Waiting for browser........................................... Mon, 27 Feb 2023 14:49:36 GMT ChromeLauncher Waiting for browser............................................. Mon, 27 Feb 2023 14:49:36 GMT ChromeLauncher Waiting for browser............................................... Mon, 27 Feb 2023 14:49:37 GMT ChromeLauncher Waiting for browser................................................. Mon, 27 Feb 2023 14:49:37 GMT ChromeLauncher Waiting for browser................................................... Mon, 27 Feb 2023 14:49:38 GMT ChromeLauncher Waiting for browser..................................................... Mon, 27 Feb 2023 14:49:38 GMT ChromeLauncher Waiting for browser....................................................... Mon, 27 Feb 2023 14:49:39 GMT ChromeLauncher Waiting for browser......................................................... Mon, 27 Feb 2023 14:49:39 GMT ChromeLauncher Waiting for browser........................................................... Mon, 27 Feb 2023 14:49:40 GMT ChromeLauncher Waiting for browser............................................................. Mon, 27 Feb 2023 14:49:40 GMT ChromeLauncher Waiting for browser............................................................... Mon, 27 Feb 2023 14:49:41 GMT ChromeLauncher Waiting for browser................................................................. Mon, 27 Feb 2023 14:49:41 GMT ChromeLauncher Waiting for browser................................................................... Mon, 27 Feb 2023 14:49:42 GMT ChromeLauncher Waiting for browser..................................................................... Mon, 27 Feb 2023 14:49:42 GMT ChromeLauncher Waiting for browser....................................................................... Mon, 27 Feb 2023 14:49:43 GMT ChromeLauncher Waiting for browser......................................................................... Mon, 27 Feb 2023 14:49:43 GMT ChromeLauncher Waiting for browser........................................................................... Mon, 27 Feb 2023 14:49:44 GMT ChromeLauncher Waiting for browser............................................................................. Mon, 27 Feb 2023 14:49:44 GMT ChromeLauncher Waiting for browser............................................................................... Mon, 27 Feb 2023 14:49:45 GMT ChromeLauncher Waiting for browser................................................................................. Mon, 27 Feb 2023 14:49:45 GMT ChromeLauncher Waiting for browser................................................................................... Mon, 27 Feb 2023 14:49:46 GMT ChromeLauncher Waiting for browser..................................................................................... Mon, 27 Feb 2023 14:49:46 GMT ChromeLauncher Waiting for browser....................................................................................... Mon, 27 Feb 2023 14:49:47 GMT ChromeLauncher Waiting for browser......................................................................................... Mon, 27 Feb 2023 14:49:47 GMT ChromeLauncher Waiting for browser........................................................................................... Mon, 27 Feb 2023 14:49:48 GMT ChromeLauncher Waiting for browser............................................................................................. Mon, 27 Feb 2023 14:49:48 GMT ChromeLauncher Waiting for browser............................................................................................... Mon, 27 Feb 2023 14:49:49 GMT ChromeLauncher Waiting for browser................................................................................................. Mon, 27 Feb 2023 14:49:49 GMT ChromeLauncher Waiting for browser................................................................................................... Mon, 27 Feb 2023 14:49:50 GMT ChromeLauncher Waiting for browser..................................................................................................... Mon, 27 Feb 2023 14:49:50 GMT ChromeLauncher Waiting for browser....................................................................................................... Mon, 27 Feb 2023 14:49:50 GMT ChromeLauncher:error connect ECONNREFUSED ::1:37367 Mon, 27 Feb 2023 14:49:50 GMT ChromeLauncher:error Logging contents of /tmp/lighthouse.pILSYwp/chrome-err.log Mon, 27 Feb 2023 14:49:50 GMT ChromeLauncher:error DevTools listening on ws://127.0.0.1:37367/devtools/browser/7c26091c-d096-4a86-a84c-85f53c75d072 [0227/144925.989931:WARNING:bluez_dbus_manager.cc(247)] Floss manager not present, cannot set Floss enable/disable. [0227/144926.025738:WARNING:sandbox_linux.cc(393)] InitializeSandbox() called with multiple threads in process gpu-process. Unable to connect to Chrome Error: Process completed with exit code 1.
解决办法
1. 强制Chrome使用IPv4连接
日志中ECONNREFUSED ::1:37367表明Lighthouse尝试通过IPv6连接Chrome失败。在Workflow的LHCI命令前添加环境变量,强制Chrome绑定IPv4:
export CHROME_FLAGS="--headless=new --disable-gpu --no-sandbox --ipv4" lhci autorun --upload.target=temporary-public-storage --collect.staticDistDir=.
2. 配置LHCI自定义启动参数
在项目根目录创建lighthouserc.js配置文件,统一管理Chrome启动参数:
module.exports = { ci: { collect: { staticDistDir: '.', chromeFlags: '--headless=new --disable-gpu --no-sandbox --ipv4', }, upload: { target: 'temporary-public-storage', }, }, };
之后直接执行lhci autorun即可,无需在命令行传递参数。
3. 延长Lighthouse超时时间
页面加载缓慢可能导致超时,在配置文件中增加等待时长:
module.exports = { ci: { collect: { staticDistDir: '.', chromeFlags: '--headless=new --disable-gpu --no-sandbox --ipv4', maxWaitForLoad: 60000, // 设置为60秒超时 }, upload: { target: 'temporary-public-storage', }, }, };
4. 验证Chrome版本兼容性
在Workflow中添加步骤检查Chrome版本,确认与LHCI版本兼容:
- name: 检查Chrome版本 run: google-chrome-stable --version
若版本不匹配,可手动安装指定版本的Chrome。
内容的提问来源于stack exchange,提问作者Yan Min Thwin
相关产品推荐
相关产品推荐

