Jest模块名称映射错误:无法定位模块,如何支持无扩展名导入?
解决Jest无法识别无扩展名模块的配置方案
1. 补充moduleFileExtensions配置
在jest.config.js中添加moduleFileExtensions字段,指定Jest需要自动解析的文件扩展名,覆盖默认规则。根据你项目中实际使用的文件类型调整,示例:
module.exports = { // 保留已有配置... moduleNameMapper: { '^components/(.*)$': '<rootDir>/src/components/$1' // 确认此路径指向项目真实的components目录 }, moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'] // 按需添加项目用到的扩展名 };
该配置会让Jest在查找无扩展名模块时,自动尝试匹配列表中的扩展名,解决找不到模块的问题。
2. 校验moduleNameMapper路径准确性
确认moduleNameMapper中的路径映射无误:<rootDir>对应项目根目录(即package.json所在目录),确保映射后的路径能准确定位到components目录下的文件,避免因路径写错导致模块查找失败。
3. 确保babel-jest的transform配置正确
如果项目依赖Babel编译JSX/TSX等文件,在jest.config.js中明确指定transform规则,保证babel-jest能正确处理对应文件:
module.exports = { // 保留已有配置... transform: { '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest' } };
同时检查babel.config.js中的预设(如@babel/preset-react、@babel/preset-env)配置完整,无遗漏必要的编译规则。
4. 核对测试文件导入路径
确认测试代码中的导入路径与实际文件路径完全匹配,比如components/UserProfile/Account/Payments对应的实际文件(如Payments.js/Payments.jsx)确实存在,避免因文件名、目录名拼写错误导致的模块查找失败。
内容的提问来源于stack exchange,提问作者CodeConnoisseur
相关产品推荐
相关产品推荐

