用 Lighthouse Node API 时怎么传入自定义的 Chrome 启动参数?
我正在用 Lighthouse 的 Node API 做自动化性能测试,想给 Chrome 加一些启动参数,比如 --no-sandbox 或者 --headless=new,但不知道该怎么传进去。试过在 chromeFlags 里加,但好像没生效?
这是我现在调用的代码:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless=new'] });
const options = { port: chrome.port, output: 'json' };
const runnerResult = await lighthouse('https://example.com', options);
await chrome.kill();
})();
但跑起来还是用的默认配置,甚至有时候报错说不支持某些 flag,是我写法不对吗?
lighthouse()调用时没把chromeFlags传进去——它不会自动继承chrome-launcher的参数,得在options里显式指定。建议改成这样:
const lighthouse = require('lighthouse');const chromeLauncher = require('chrome-launcher');(async () => {const chrome = await chromeLauncher.launch({chromeFlags: ['--no-sandbox', '--headless=new']});const options = {port: chrome.port,output: 'json',chromeFlags: ['--no-sandbox', '--headless=new']};const runnerResult = await lighthouse('https://example.com', options);await chrome.kill();})();关键点是
options.chromeFlags必须显式传进去,Lighthouse 内部会把这部分参数合并进自己的启动配置里。另外注意--headless=new是 Chrome 112+ 才支持的,老版本会报错,可以先确认下 Chrome 版本。如果还是不生效,可以加个
logLevel: 'info'看下启动日志,确认 flags 是否真的带上了。