Lighthouse Node API运行时报“No URL specified”该怎么解决?
我在用Lighthouse的Node API写自动化测试脚本时,按照文档初始化了配置对象,但运行时报错ERROR No URL specified。明明在代码里设置了url参数,这是为什么?
代码是这样的:
const lighthouse = require('lighthouse');
const options = {
url: 'https://example.com',
output: 'json',
onlyCategories: ['performance']
};
lighthouse(options.url, options)
.then(results => console.log(results));
报错提示指向options.url,但控制台打印options.url确实有值啊…
试过把url写成字符串直接传参,或者改用chromeFlags参数,但问题依旧。是不是配置格式哪里不对?
你现在的写法问题出在
lighthouse()方法的第一个参数上。虽然看起来你传了options.url,但其实这个方法的第一个参数不需要再单独传url,直接把整个options对象丢进去就行。正确的写法应该是这样:
JS里面这种参数设计有点绕,官方可能是想让你统一管理配置对象,而不是分开传。改完这个应该就没问题了。如果还有报错,记得检查一下是不是环境或者版本的问题。
url单独拎出来传参了,但实际上Lighthouse的第一个参数就应该直接是URL字符串,而不是从options对象里拆出来的。正确的写法是这样的:
注意看,我把
url直接放进了第一个参数,而不是像你之前那样从options.url里取出来。Lighthouse的Node API文档确实没写得太清楚,容易让人误解。另外一个小建议:如果后续要用WP里面的一些动态生成的URL,可以考虑用环境变量或者配置文件来管理这些地址,这样更方便维护。