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

React Testing Library运行测试时Jest无法找到.d.ts声明的模块联邦模块

问题根因

这个问题是ts-jest的类型检测逻辑和项目正常编译的tsc逻辑不一致导致的:Jest运行时默认不会加载src目录外根目录下的类型声明文件,且模块联邦的远程模块别名没有被Jest正确识别。你用React.lazy导入不报错是因为动态导入不会被Jest的静态类型检查提前解析,所以不会触发类型找不到的报错。

解决方案

按以下步骤依次排查修改即可:

  1. 调整Jest配置
    在你的jest.config.js(或package.json内的jest配置段)添加以下配置:
module.exports = {
  // 其他原有配置保留
  moduleNameMapper: {
    // 映射UI模块到你的类型声明文件
    "^UI$": "<rootDir>/UI.d.ts"
  },
  transform: {
    "^.+\\.(ts|tsx)$": [
      "ts-jest",
      {
        // 显式指定ts-jest使用的tsconfig包含规则,和你项目的tsconfig对齐
        tsconfig: {
          include: ["src", "**/*.d.ts"]
        }
      }
    ]
  }
}
  1. 校验Jest rootDir配置
    确认你的Jest配置里没有把rootDir设置为src,如果有要改为项目根目录,才能正常读取根目录下的UI.d.ts文件。
  2. 兼容性优化(可选)
    如果以上配置修改后还有问题,可以把根目录的UI.d.ts移动到src/@types/UI.d.ts路径,TS和ts-jest默认都会自动读取src/@types目录下的类型声明,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:54:00