Angular中Jest无法识别新创建的medsuite-components包求助
解决方案:Jest无法找到git引入的medsuite-components包
以下是针对问题的具体解决步骤:
1. 确认包已正确安装到node_modules
首先执行依赖安装命令,确保git链接的包被完整拉取到本地node_modules目录:
npm install # 或使用yarn yarn install
检查node_modules/medsuite-components目录是否存在,若不存在,排查git链接权限或网络问题,确保包能正常拉取。
2. 手动配置Jest的moduleNameMapper映射包路径
在jest.config.js的moduleNameMapper中,直接添加对medsuite-components的路径映射,确保Jest能定位到包的位置:
const { pathsToModuleNameMapper } = require('ts-jest'); const { compilerOptions } = require('./tsconfig'); module.exports = { preset: 'jest-preset-angular', roots: ['<rootDir>/src/'], testMatch: ['**/+(*.)+(spec).+(ts)'], setupFilesAfterEnv: ['<rootDir>/src/test.ts'], collectCoverage: true, coverageReporters: ['html'], coverageDirectory: 'coverage/accounts_frontend', moduleNameMapper: { ...pathsToModuleNameMapper(compilerOptions.paths || {}, { prefix: '<rootDir>/' }), // 添加这行映射 'medsuite-components': '<rootDir>/node_modules/medsuite-components' }, modulePaths: ['<rootDir>/node_modules'] // 明确指向项目根目录的node_modules };
3. 确保TypeScript能识别包的类型(可选)
如果包是TypeScript编写且未预先编译,需要在tsconfig.json的include数组中添加包的路径,让TS编译器识别其类型定义:
{ "compilerOptions": { // 现有配置... }, "include": [ "src/**/*", "node_modules/medsuite-components/**/*.ts" ] }
问题原因
项目运行时(如Angular CLI)能自动识别node_modules中的包,但Jest在解析git链接的第三方包时,可能无法通过默认路径映射找到包的位置,手动添加moduleNameMapper可以强制Jest定位到正确的包目录。
内容的提问来源于stack exchange,提问作者Bráulio Figueiredo
相关产品推荐
相关产品推荐

