如何配置Jest,使其自动识别绝对路径下的index.ts文件?
解决Jest无法识别绝对路径下目录自动导入index.ts的问题
修改你的jest.config.js配置,调整路径映射规则并指定模块解析的文件扩展名:
const { pathsToModuleNameMapper } = require('ts-jest'); module.exports = { preset: 'ts-jest', testEnvironment: 'node', transform: { '^.+\\.ts?$': 'ts-jest', }, transformIgnorePatterns: ['<rootDir>/node_modules/'], modulePaths: ['./src'], // 添加prefix参数,确保@/*映射到src目录下的对应路径 moduleNameMapper: pathsToModuleNameMapper( { '@/*': ['*'] }, { prefix: '<rootDir>/src/' } ), // 指定解析模块时优先尝试的文件扩展名 moduleFileExtensions: ['ts', 'js', 'json'], clearMocks: true, };
原因说明
原配置中pathsToModuleNameMapper未指定prefix,导致@/events被解析为events而非完整的src/events路径,Jest无法定位到目标目录。添加prefix: '<rootDir>/src/'后,路径映射会正确指向src目录下的对应文件夹,再配合moduleFileExtensions明确优先解析.ts文件,Jest就会自动查找目录下的index.ts文件,无需显式指定文件名。
如果你的tsconfig.json中已配置baseUrl: "./src"和paths: { "@/*": ["*"] },此Jest配置会与TS的路径规则完全对齐,保证开发和测试环境的路径解析行为一致。
内容的提问来源于stack exchange,提问作者Gideon Idoko
相关产品推荐
相关产品推荐

