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
相关产品推荐
相关产品推荐

