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

Nx工作区Jest出现重复axios手动模拟警告,求配置方案

解决Nx工作区Jest重复手动模拟警告(仅保留根目录__mocks__)

1. 清理冗余模拟文件

删除所有子项目(React应用、各个库)下的__mocks__文件夹,只保留仓库根目录的__mocks__/axios.js。

2. 配置根目录基础Jest预设

修改根目录的jest.preset.js(或jest.config.base.js),添加modulePaths确保Jest能从根目录查找模拟文件:

const nxPreset = require('@nx/jest/preset').default;

module.exports = {
  ...nxPreset,
  modulePaths: ['<rootDir>'], // 让Jest从根目录开始解析模块
  // 若有全局初始化文件,确保路径指向根目录
  setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
};

3. 确保子项目继承基础配置

检查每个子项目的Jest配置文件(如jest.config.ts),确保正确继承根目录的预设,且不覆盖modulePaths或模拟相关配置:

import { getJestProjects } from '@nx/jest';

export default {
  preset: '../../jest.preset.js', // 根据子项目层级调整相对路径
  displayName: 'my-library',
  // 仅添加项目特定配置(如testMatch、coverageReporters等),不要修改modulePaths
};

4. 清除Jest与Nx缓存

运行以下命令清除缓存,避免旧模拟文件残留导致的警告:

nx reset
# 或单独清除Jest缓存
npx jest --clearCache

5. 验证配置

运行React应用的测试命令:

nx test my-react-app

此时应不再出现jest-haste-map重复模拟警告,且axios的模拟能正常工作。

额外注意事项

  • 若子项目的Jest配置中存在roots字段,确保其包含<rootDir>,避免限制Jest的查找范围。
  • 不要在子项目中使用moduleNameMapper手动映射axios,让Jest自动识别根目录的__mocks__文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:42:38