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

NestJS应用报错EntityMetadataNotFoundError:未找到Patient元数据

NestJS + TypeORM 报错:No metadata for "Patient" was found.

错误日志

[Nest] 12125  - 05/30/2023, 1:43:35 PM   ERROR [ExceptionsHandler] No metadata for "Patient" was found.
EntityMetadataNotFoundError: No metadata for "Patient" was found.
    at DataSource.getMetadata (/Users/rajveersingh/Desktop/parchaa/HIP/parchaa-hip/src/data-source/DataSource.ts:444:30)
    at Repository.get metadata [as metadata] (/Users/rajveersingh/Desktop/parchaa/HIP/parchaa-hip/src/repository/Repository.ts:53:40)
    at Repository.save (/Users/rajveersingh/Desktop/parchaa/HIP/parchaa-hip/src/repository/Repository.ts:206:18)
    at HiuConsentService.patientsFind (/Users/rajveersingh/Desktop/parchaa/HIP/parchaa-hip/src/hiu-consent/hiu-consent.service.ts:913:38)
    at HiuConsentController.patientsFind (/Users/rajveersingh/Desktop/parchaa/HIP/parchaa-hip/src/hiu-consent/hiu-consent.controller.ts:129:49)
    at /Users/rajveersingh/Desktop/parchaa/HIP/parchaa-hip/node_modules/@nestjs/core/router/router-execution-context.js:38:29
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at /Users/rajveersingh/Desktop/parchaa/HIP/parchaa-hip/node_modules/@nestjs/core/router/router-execution-context.js:46:28
    at /Users/rajveersingh/Desktop/parchaa/HIP/parchaa-hip/node_modules/@nestjs/core/router/router-proxy.js:9:17

相关代码

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm'; 
import { ConfigModule, ConfigService } from '@nestjs/config';
import { RefreshTokenModule } from 'src/refresh-token/refresh-token.module';
import { HiuConsentController } from './hiu-consent.controller';
import { HiuConsentService } from './hiu-consent.service';
import { ConsentRequest } from './entities/consentRequest.entity';
import { ConsentsOnFetch } from './entities/cosentOnFetch.entity';
import { FideliusService } from 'src/fidelius/fidelius.service';
import { CmRequest } from './entities/cmRequest.entity';
import { Patient } from './entities/patient.entity';
import { DecryptedData } from './entities/data.entity';
import { HiuNotify } from './entities/hiuNotify.entity';

@Module({
  imports: [
    RefreshTokenModule,
    TypeOrmModule.forRootAsync({
      imports: [
        ConfigModule.forRoot({
          isGlobal: true,
          envFilePath: ".env",
        }),
      ],
      useFactory: (configService: ConfigService) => ({
        type: 'postgres',
        host: configService.get('DB_HOST'),
        port: +configService.get<number>('DB_PORT'),
        username: configService.get('DB_USERNAME'),
        password: configService.get('DB_PASSWORD'),
        database: configService.get('DB_DATABASE'),
        synchronize: configService.get<boolean>('DB_SYNC'),
        entities: [ ConsentRequest, ConsentsOnFetch, CmRequest,Patient,DecryptedData, HiuNotify ]
      }),
      inject: [ConfigService],
    }),
    TypeOrmModule.forFeature([ConsentRequest, ConsentsOnFetch, CmRequest, Patient, DecryptedData, HiuNotify]),
  ],
  controllers: [HiuConsentController],
  providers: [HiuConsentService, FideliusService]
})
export class HiuConsentModule {}

Patient 实体

import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";

@Entity()
export class Patient {

    @PrimaryGeneratedColumn()
    id: number;

    @Column({ default: 'abc'})
    patientId: string;

    @Column({ default: 'abc'})
    patientName: string;
}

补充信息

  • 已尝试使用dist目录下的entity.js文件配置实体路径,问题未解决
  • 两个原本独立运行正常的分支,将分支B合并到分支A后,分支B代码出现此错误,怀疑与package-lock.json有关

解决方法

1. 检查实体导入路径与大小写

TypeORM对实体类名、文件名的大小写敏感,确保:

  • Patient实体的导入路径正确,文件名大小写与代码引用完全一致
  • 代码中所有调用Patient的地方类名大小写统一

2. 清理编译产物并重新构建

分支合并后可能残留旧编译文件导致冲突:

rm -rf dist
npm run build
npm run start:prod

3. 统一TypeORM配置方式

避免在模块内重复配置数据库连接,建议将TypeOrmModule.forRootAsync抽离到全局模块(如app.module.ts),当前模块仅用TypeOrmModule.forFeature引入所需实体,减少重复配置的冲突风险。

4. 修复依赖版本冲突

分支合并后可能出现依赖版本不一致,尤其是@nestjs/typeorm与typeorm的版本:

  1. 删除旧依赖文件:
rm -rf node_modules package-lock.json
  1. 重新安装依赖:
npm install
  1. 确认package.json中@nestjs/typeorm与typeorm版本兼容(可参考NestJS官方文档的版本对应表)

5. 验证实体元数据装饰器

确保Patient实体上的@Entity()装饰器正确导入自typeorm,无拼写错误或导入路径错误。


内容的提问来源于stack exchange,提问作者Rajveer -parchaa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:13:20