Lighthouse生成报告时为什么提示”未运行任何审核”?
我在用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有关?
...opts这样展开不对。我之前这样搞也是一堆0,改成这样:第二个参数是配置对象,第三个才是选项,文档里藏得挺深。
---
### 第一步:检查
lighthouse函数的调用方式你的代码里直接用了
lighthouse(...opts),但这里的...展开操作符可能会导致参数传递错误。lighthouse函数其实需要三个参数:1.
url- 要测试的页面地址2.
config- 可选配置对象3.
flags- 全局标志你现在的写法会把整个
opts对象当成第一个参数传进去,其他参数就没了。正确的调用方式应该是这样:如果你之前是照着文档写的,可能漏掉了这个细节。官方文档有时候会简化调用示例,但实际使用时得严格按照参数顺序来。
---
### 第二步:确认
onlyCategories是否限制过多你在
opts里加了onlyCategories: ['performance'],这会让Lighthouse只跑性能相关的审核。如果目标页面的性能审核条件不满足(比如缺少某些资源),就会导致没有任何审核结果。建议先把
onlyCategories注释掉,让Lighthouse跑全量审核,看看是不是某些类别被排除了:这样可以确认问题是不是出在审核类别的限制上。
---
### 第三步:检查目标页面的加载状态
你说换了域名后就出现这个问题,可能是目标页面加载失败了。即使控制台没有报错,也有可能是页面的某些资源没加载成功。
你可以尝试打开浏览器开发者工具(F12),切换到Network标签,手动访问
https://example.com,看看有没有以下几种情况:1. 页面返回了非200的状态码(比如404或500)
2. 有关键资源加载失败(比如CSS、JS文件)
3. 存在跨域问题(CORS错误)
如果确实有问题,Lighthouse是不会生成完整报告的,因为它依赖页面正常加载才能跑审核。
---
### 第四步:确认环境配置是否正确
Lighthouse对运行环境有一些要求,特别是当你用
throttlingMethod: 'provided'时。这意味着它会直接使用当前环境的网络条件,而不是模拟慢速网络。如果你的网络不稳定或者本地开发环境有问题,也可能导致审核失败。你可以试着改成模拟网络条件:
此外,确保你的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虽然强大,但调试起来真是够折腾人的。每次遇到这种“未运行任何审核”的问题,我都得从头到尾查一遍配置和环境,希望你能顺利搞定!