如何在TestCafe项目中通过动态import()使用Lighthouse npm包?
解决动态导入Lighthouse的调用报错问题
报错原因:动态import()语句返回的是模块命名空间对象,而非可直接调用的函数。这个对象本身没有调用签名,所以直接执行lighthouse(url, options)会触发类型错误。
正确写法
Lighthouse的核心扫描函数是默认导出的,需要从模块对象中提取default属性:
写法一(解构赋值,更简洁)
let { default: lighthouse } = await import('lighthouse/core/index'); let runnerResult = await lighthouse(url, options);
写法二(直接访问模块属性)
let lighthouseModule = await import('lighthouse/core/index'); let runnerResult = await lighthouseModule.default(url, options);
如果需要使用Lighthouse的其他命名导出成员,也可以通过模块对象直接访问,比如:
let { default: lighthouse, someNamedExport } = await import('lighthouse/core/index');
内容的提问来源于stack exchange,提问作者patel
相关产品推荐
相关产品推荐

