用 Lighthouse Node API 时怎么传入自定义的 Chrome 启动参数?

书生シ尚萍 阅读 25

我正在用 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,是我写法不对吗?

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
UX一莹
UX一莹 Lv1
你这个问题我踩过坑,问题出在 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 是否真的带上了。
点赞 4
2026-02-26 00:04