You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jest导入Lighthouse的startFlow函数时解析失败求助

解决方案

1. 调整Jest配置以支持ES模块

在jest.config.ts中更新配置,让Jest能够正确解析Lighthouse的ES模块代码:

export default {
  // 保留你已有的其他配置(如testEnvironment、setupFilesAfterEnv等)
  transform: {}, // 禁用默认的babel-jest转换,避免干扰ES模块解析
  extensionsToTreatAsEsm: ['.ts', '.tsx'],
  moduleNameMapper: {
    '^(\\.{1,2}/.*)\\.js$': '$1', // 处理TypeScript导入时的.js后缀问题
  },
  testEnvironmentOptions: {
    customExportConditions: ['node', 'node-addons'],
  },
};

2. 配置项目的模块类型

在项目根目录的package.json中添加type: module声明,明确项目使用ES模块:

{
  "type": "module"
}

如果保留jest.config.ts作为配置文件,需要确保ts-node支持ES模块:

  • 安装依赖:npm install -D ts-node @types/node
  • 在package.json中添加ts-node配置:
{
  "ts-node": {
    "esm": true,
    "experimentalSpecifierResolution": "node"
  }
}
  • 启动命令改为:NODE_OPTIONS="--loader ts-node/esm" jest

3. 降级替代方案(临时用CommonJS导入)

如果ES模块配置遇到阻碍,可以临时改用CommonJS方式导入Lighthouse:

const { UserFlow, startFlow } = require('lighthouse');

注意:该方案属于临时 workaround,Lighthouse官方已逐步弃用CommonJS入口,长期建议采用ES模块配置。

4. 确保Jest版本达标

使用Jest 28及以上版本,旧版本对ES模块的支持存在缺陷。更新命令:

npm install -D jest@latest

内容的提问来源于stack exchange,提问作者Gosiek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:42:19