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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:01:26