Lighthouse生成报告时为什么提示”未运行任何审核”?

皇甫秋花 阅读 42

我在用Lighthouse API生成报告时,页面一直显示”未运行任何审核”的错误。按照文档写了配置对象,但运行后结果里所有分数都是0,控制台也没报错,这是怎么回事?

我尝试过这样调用:


async function runLighthouse() {
  const opts = {
    url: 'https://example.com',
    throttlingMethod: 'provided',
    onlyCategories: ['performance']
  };
  const result = await lighthouse(...opts);
  console.log(result.lhr);
}
runLighthouse();

检查了URL和参数都正确,但生成的报告里audit列表完全空了。之前在HTTPS环境下测试没问题,换成其他域名就出现这个情况,有没有可能跟CORS有关?

我来解答 赞 5 收藏
二维码
手机扫码查看
2 条解答
UE丶庆玲
你调用lighthouse的时候参数传错了,...opts这样展开不对。我之前这样搞也是一堆0,改成这样:

const result = await lighthouse(opts.url, null, opts);


第二个参数是配置对象,第三个才是选项,文档里藏得挺深。
点赞 7
2026-02-09 12:23
技术福萍
你这个情况我遇到过,Lighthouse生成报告时出现“未运行任何审核”,通常是配置或者环境有问题。咱们一步一步来排查和解决。

---

### 第一步:检查lighthouse函数的调用方式
你的代码里直接用了lighthouse(...opts),但这里的...展开操作符可能会导致参数传递错误。lighthouse函数其实需要三个参数:
1. url - 要测试的页面地址
2. config - 可选配置对象
3. flags - 全局标志

你现在的写法会把整个opts对象当成第一个参数传进去,其他参数就没了。正确的调用方式应该是这样:

async function runLighthouse() {
const url = 'https://example.com'; // URL单独定义
const opts = {
throttlingMethod: 'provided', // 使用提供的网络条件
onlyCategories: ['performance'] // 只跑性能相关审核
};

// 注意这里要把url单独传入,不要混在opts里
const result = await lighthouse(url, opts);
console.log(result.lhr); // 输出完整的LHR数据
}
runLighthouse();


如果你之前是照着文档写的,可能漏掉了这个细节。官方文档有时候会简化调用示例,但实际使用时得严格按照参数顺序来。

---

### 第二步:确认onlyCategories是否限制过多
你在opts里加了onlyCategories: ['performance'],这会让Lighthouse只跑性能相关的审核。如果目标页面的性能审核条件不满足(比如缺少某些资源),就会导致没有任何审核结果。

建议先把onlyCategories注释掉,让Lighthouse跑全量审核,看看是不是某些类别被排除了:

const opts = {
throttlingMethod: 'provided',
// onlyCategories: ['performance'] // 暂时注释掉
};


这样可以确认问题是不是出在审核类别的限制上。

---

### 第三步:检查目标页面的加载状态
你说换了域名后就出现这个问题,可能是目标页面加载失败了。即使控制台没有报错,也有可能是页面的某些资源没加载成功。

你可以尝试打开浏览器开发者工具(F12),切换到Network标签,手动访问https://example.com,看看有没有以下几种情况:
1. 页面返回了非200的状态码(比如404或500)
2. 有关键资源加载失败(比如CSS、JS文件)
3. 存在跨域问题(CORS错误)

如果确实有问题,Lighthouse是不会生成完整报告的,因为它依赖页面正常加载才能跑审核。

---

### 第四步:确认环境配置是否正确
Lighthouse对运行环境有一些要求,特别是当你用throttlingMethod: 'provided'时。这意味着它会直接使用当前环境的网络条件,而不是模拟慢速网络。如果你的网络不稳定或者本地开发环境有问题,也可能导致审核失败。

你可以试着改成模拟网络条件:

const opts = {
throttlingMethod: 'simulate', // 改成模拟网络条件
onlyCategories: ['performance']
};


此外,确保你的Node.js版本符合Lighthouse的要求(>=10.13)。如果版本太低,可能会有兼容性问题。

---

### 第五步:验证HTTPS和CORS问题
你说之前在HTTPS环境下测试没问题,换成其他域名就挂了,这确实可能跟HTTPS和CORS有关。Lighthouse强制要求目标页面必须通过HTTPS访问,否则很多审核项都无法运行。

另外,如果你的目标页面加载了第三方资源(比如CDN上的JS文件),而这些资源没有正确设置CORS头,也会导致审核失败。

你可以手动检查一下:
1. 目标页面是否使用了HTTPS
2. 第三方资源是否有CORS头(可以用curl -I https://cdn.example.com/resource.js命令查看响应头)

如果发现问题,可以在服务器端配置正确的CORS策略。

---

### 总结
按照上面的步骤逐一排查,基本能定位到问题原因。先调整lighthouse函数的调用方式,再检查目标页面的加载状态和环境配置。如果还是不行,可以把完整的result.lhr输出贴出来,我们再具体分析。

最后吐槽一句,Lighthouse虽然强大,但调试起来真是够折腾人的。每次遇到这种“未运行任何审核”的问题,我都得从头到尾查一遍配置和环境,希望你能顺利搞定!
点赞 15
2026-01-30 08:03