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

React项目从JavaScript迁移到TypeScript时Jest出现找不到模块报错

问题排查方向
  • 检查Jest配置的模块扩展名声明
    你当前的jest.config中未配置moduleFileExtensions字段,Jest默认只会识别js/jsx/json/node后缀的文件,无法识别.tsx类型的组件,需要在jest.config中添加配置:

    module.exports = {
      preset: 'ts-jest',
      transform: {
        '^.+\\.(ts|tsx)?$': 'ts-jest',
        "^.+\\.(js|jsx)$": "babel-jest",
      },
      // 新增以下配置
      moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node']
    }
    
  • 取消tsconfig中include字段的注释
    你当前tsconfig的include配置是被注释状态,ts-jest无法正确匹配项目范围内的ts/tsx文件,取消注释即可:

    {
      "compilerOptions": {/* 原有配置保持不变 */},
      "include": ["src/**/*"], // 取消此处注释
      "exclude": ["./cypress/**/*", "./coverage/**/*", "node_modules"]
    }
    
  • 检查导入路径的大小写完全匹配
    Node环境下Jest对路径大小写敏感,而webpack运行时可能默认不区分大小写,导致项目能正常运行但测试报错。请核对报错的导入路径和实际文件路径的大小写完全一致,比如目录名keyboardInput是否有大小写拼写差异、文件名GeneralFieldInput大小写是否匹配。

  • 检查测试工具版本兼容性
    你当前依赖的babel-jest版本为23.x,ts-jest版本为27.x,二者大版本差异过大存在兼容问题,建议将两个依赖的大版本升级到一致(比如都升级到27.x),避免转换逻辑冲突。

  • 检查是否存在同名旧文件
    请确认原GeneralFieldInput的JS版本文件已经删除,避免同名文件导致Jest加载优先级异常。

  • 可选:配置Jest模块查找目录
    如果项目中大量使用相对路径导入,可在jest.config中添加moduleDirectories配置简化模块查找逻辑:

    module.exports = {
      // 原有配置保持不变
      moduleDirectories: ['node_modules', 'src']
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:09:03