Jest无法解析TypeScript路径映射,抛出模块未找到错误
解决Jest无法识别TypeScript路径映射的问题
方案一:手动配置Jest的moduleNameMapper
在Jest配置文件(如jest.config.js或jest.config.ts)中,添加与tsconfig路径一一对应的映射规则,让Jest能解析别名:
module.exports = { // 其他Jest基础配置 preset: 'ts-jest', testEnvironment: 'node', // 若为浏览器环境可改为'jsdom' moduleNameMapper: { '^@utils/(.*)$': '<rootDir>/utils/$1', '^@helpers/(.*)$': '<rootDir>/ui/helpers/$1', '^@domElements/(.*)$': '<rootDir>/core/dom/$1', '^@networking/(.*)$': '<rootDir>/networking/$1', '^@components/(.*)$': '<rootDir>/ui/components/$1', '^@decorators/(.*)$': '<rootDir>/core/decorators/$1', '^@eventFunctions/(.*)$': '<rootDir>/ui/event functions/$1' } };
方案二:自动同步tsconfig路径(避免重复配置)
如果不想手动维护两份路径规则,可借助tsconfig-paths工具自动同步tsconfig中的配置:
- 安装依赖:
npm install --save-dev tsconfig-paths
- 修改Jest配置,添加初始化脚本:
module.exports = { preset: 'ts-jest', testEnvironment: 'node', setupFilesAfterEnv: ['<rootDir>/jest.setup.js'] };
- 创建
jest.setup.js文件,写入路径注册逻辑:
const tsconfig = require('./tsconfig.json'); const tsconfigPaths = require('tsconfig-paths'); tsconfigPaths.register({ baseUrl: '.', // 与tsconfig中的baseUrl保持一致 paths: tsconfig.compilerOptions.paths });
验证配置
修改完成后,重新运行测试命令:
npx jest
此时Jest即可正确识别tsconfig中配置的路径别名,解决模块找不到的报错。
内容的提问来源于stack exchange,提问作者Muhammad Sami
相关产品推荐
相关产品推荐

