在使用 Jest 和 TypeScript 进行单元测试时,配置绝对路径(如 baseUrl
)可以帮助简化模块导入路径,但在某些情况下可能会遇到“找不到模块”的错误。以下是解决这个问题的详细步骤和原因分析:
baseUrl
用于指定模块解析的根目录。tsconfig.json
或 jsconfig.json
jest.config.js
tsconfig.json
或 jest.config.js
中的 baseUrl
配置不正确。以下是一个示例配置,展示如何在 tsconfig.json
和 jest.config.js
中正确配置绝对路径。
tsconfig.json
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
},
// 其他配置...
}
}
jest.config.js
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
// 其他配置...
};
确保你尝试导入的模块确实存在于指定的路径中。例如,如果你在测试中导入 @/components/Button
,确保 src/components/Button.ts
文件存在。
确保 jest.config.js
中的 moduleNameMapper
正确映射了 TypeScript 的路径配置。
假设你有一个简单的 TypeScript 文件 src/components/Button.ts
:
// src/components/Button.ts
export const sayHello = () => {
return 'Hello, World!';
};
然后在测试文件中导入这个模块:
// __tests__/Button.test.ts
import { sayHello } from '@/components/Button';
test('sayHello should return "Hello, World!"', () => {
expect(sayHello()).toBe('Hello, World!');
});
通过以上配置和检查步骤,你应该能够解决在使用 Jest 和 TypeScript 时遇到的“找不到模块”的错误。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云