You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jest绝对路径导入entities模块报Cannot find module,改名正常求解决

解决Jest中Feature-Sliced Design规范下entities目录绝对路径导入报错问题

问题背景

  • 遵循Feature-Sliced Design规范,使用绝对路径import { counterReducer, CounterStateSchema } from 'entities/Counter';导入模块时,Jest抛出Cannot find module 'entities/Counter'错误
  • 将entities目录重命名为任意其他名称(如aaaa、entity)后,Jest测试可正常通过
  • Webpack、Storybook等其他工具无导入异常,仅Jest出现问题
  • 改用相对路径导入时,Jest测试可正常执行

问题原因

Jest的模块解析逻辑会优先在moduleDirectories配置的node_modules目录中查找非相对路径的导入模块,而npm仓库中恰好存在名为entities的第三方包,导致Jest误将entities/xxx的导入请求指向node_modules中的第三方包,而非项目src目录下的自定义entities目录。

解决方案

在Jest配置的moduleNameMapper中添加显式映射规则,强制Jest将entities/开头的导入解析到项目src下的对应目录:

修改后的Jest配置片段

moduleNameMapper: {
  '\\.(jpg|jpeg|png|gif|svg)$': '<rootDir>/config/jest/mocks/file.js',
  '\\.s?css$': 'identity-obj-proxy',
  // 新增映射规则,指定entities的解析路径
  '^entities/(.*)$': '<rootDir>/src/entities/$1'
},

验证效果

修改配置后,保留entities目录名称,使用原绝对路径导入语句执行Jest测试,即可正常通过,无需调整目录结构或改用相对路径。

内容的提问来源于stack exchange,提问作者alles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:55:22