TypeScript项目monorepo风格测试目录下ts-jest无法识别类型如何解决
解决方案
你遇到的错误本质是ts-jest默认加载根目录的tsconfig.json,而根目录配置既没有引入jest类型定义,也没有包含tests目录下的测试文件,所以类型检查不通过,按照以下步骤调整即可:
1. 安装必要依赖
首先确保已经安装jest类型声明包:
npm i @types/jest -D # 或使用yarn/pnpm的对应安装命令
2. 修正根目录tsconfig.json配置
开启复合项目强制要求的声明生成配置:
{ "compilerOptions": { "composite": true, "declaration": true, // 复合项目必须开启生成声明文件 "declarationMap": true // 可选,可提升类型跳转体验 }, "include": ["src"] }
3. 修正tests/tsconfig.json配置
去掉冗余字段,调整路径匹配规则:
{ "extends": "../tsconfig.json", "references": [ { "path": ".." } // 无需name字段,直接指向根目录配置即可 ], "compilerOptions": { "types": ["jest"], "rootDir": ".", // 根目录改为当前tests目录,避免引入外层不需要的文件 "noEmit": true }, "include": ["**/*.test.ts"] // 明确匹配测试文件范围 }
4. 调整jest配置指定tsconfig路径
告诉ts-jest使用tests目录下的配置文件做类型检查:
{ "jest": { "preset": "ts-jest", "environment": "node", "transform": { "^.+\\.tsx?$": ["ts-jest", { "tsconfig": "tests/tsconfig.json" }] } } }
配置完成后可先执行tsc -b tests验证测试文件类型无报错,再执行jest命令即可正常运行。
内容的提问来源于stack exchange,提问作者Sri
相关产品推荐
相关产品推荐

