如何在Jest-e2e配置中同时添加libs路径映射与axios模块映射?
解决Jest中同时配置TS路径映射与Axios模块映射的问题
问题根源
你遇到的路径解析错误,是因为pathsToModuleNameMapper的prefix参数里多了多余的双引号,导致生成的映射路径格式异常,无法正确匹配@app/*类的导入路径。
正确配置方案
要同时实现TSConfig中定义的libs路径映射和额外的Axios映射,需要两步操作:
- 修正
prefix参数的引号问题 - 通过对象合并将两个映射规则整合
以下是修改后的完整jest-e2e.js配置:
const { pathsToModuleNameMapper } = require('ts-jest'); const { compilerOptions } = require('../../../tsconfig.json'); // 生成TSConfig路径对应的映射规则 const tsPathsMapper = pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/../../../' // 移除多余的双引号 }); module.exports = { moduleFileExtensions: ["js", "json", "ts"], verbose: true, rootDir: '.', preset: "ts-jest", testEnvironment: "node", testRegex: ".e2e-spec.ts$", transform: { "^.+\\.(t|j)s$": "ts-jest" }, // 合并TS路径映射与Axios自定义映射 moduleNameMapper: { ...tsPathsMapper, '^axios$': require.resolve('axios') }, };
关键说明
- 修正prefix参数:原配置中
prefix: '"<rootDir>/../../../'的双引号会被解析到最终路径中,导致Jest无法识别正确的文件位置,移除后路径格式恢复正常。 - 合并映射规则:使用ES6对象展开运算符
...将tsPathsMapper(来自TSConfig的路径映射)和Axios的自定义映射合并,确保两种规则同时生效。
这样配置后,Jest既能正确解析@app/logger这类TSConfig中定义的路径,也能按照指定规则处理Axios的模块导入。
内容的提问来源于stack exchange,提问作者Pradip
相关产品推荐
相关产品推荐

