无法导入Lighthouse的startFlow模块,模块路径不存在求助
解决Lighthouse用户流示例中
ERR_MODULE_NOT_FOUND错误 问题原因
Lighthouse版本迭代后,官方已将Fraggle Rock(用户流API)的入口路径从lighthouse/lighthouse-core/fraggle-rock/api.js调整到了包的顶层导出,旧路径结构已被移除,导致示例代码中的导入语句失效。
解决方案
1. 修正导入语句
将原代码中的导入路径替换为包的顶层导出:
// 替换原导入行 import {startFlow} from 'lighthouse';
2. 修改后的完整代码
import fs from 'fs'; import open from 'open'; import puppeteer from 'puppeteer'; import {startFlow} from 'lighthouse'; // 修正后的导入路径 async function captureReport() { const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); const flow = await startFlow(page, {name: 'Single Navigation'}); await flow.navigate('https://web.dev/performance-scoring/'); await browser.close(); const report = await flow.generateReport(); fs.writeFileSync('flow.report.html', report); open('flow.report.html', {wait: false}); } captureReport();
3. 验证依赖版本
确保安装的是Lighthouse最新稳定版,若之前安装的版本过旧,可重新安装:
npm install lighthouse@latest puppeteer open
4. 确认ES模块配置
确保package.json中已正确设置ES模块:
{ "type": "module" }
完成以上修改后,重新执行node official_example.js即可正常生成用户流报告。
内容的提问来源于stack exchange,提问作者user3502708
相关产品推荐
相关产品推荐

