运行Jest时tsConfig.app.json配置的Typescript paths无法解析如何解决
解决步骤
- 原配置失效有两个常见原因:一是只精确匹配了
@app/core根路径,无法匹配该路径下的子模块导入;二是Jest默认读取根目录tsconfig.json的配置,你将paths写在tsconfig.app.json中Jest无法识别。按照以下步骤修正即可:
- 修正moduleNameMapper的正则匹配规则,覆盖所有子路径
// jest.config.js moduleNameMapper: { // 匹配所有@app/core开头的导入路径,包含子路径 "^@app/core(.*)$": "<rootDir>/src/app/core$1" }
- 显式指定Jest读取你配置了paths的ts配置文件
如果你使用ts-jest处理TypeScript代码,需要在transform配置中指定使用tsconfig.app.json,避免Jest读不到paths配置:
// jest.config.js transform: { "^.+\\.(ts|tsx)$": ["ts-jest", { // 此处路径对应你存放paths配置的tsconfig文件路径 tsconfig: "tsconfig.app.json" }] }
- (可选)批量同步tsconfig的paths配置
如果你的项目别名较多,不需要手动逐个编写moduleNameMapper规则,可以直接用ts-jest提供的工具自动从tsconfig读取paths配置:
// jest.config.js 头部导入工具 const { pathsToModuleNameMapper } = require('ts-jest'); // 读取你配置了paths的ts配置文件的编译选项 const { compilerOptions } = require('./tsconfig.app.json'); module.exports = { // 保留其他原有配置 moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' }) }
- 配置完成后执行
npx jest --clearCache清空Jest缓存,再运行测试即可生效。
内容的提问来源于stack exchange,提问作者Elvis Shrestha
相关产品推荐
相关产品推荐

