Node.js/Nest.js

[Nest.js - TypeORM] EntityMetadataNotFoundError

BlockHead 2023. 5. 16. 12:53
Settings
  • Node.js v18.14.0
  • @nestjs/cli v9.4.2
  • @nestjs/common v9.4.0
  • @nestjs/core v9.4.0
  • @nestjs/typeorm v9.0.1
  • typeorm v0.3.15
  • mysql2 v3.2.4

 

문제

TypeORM 의 entities 옵션을 다음과 같이 경로 기반 설정

entities: [__dirname + '/../**/*.entity{.ts,.js}']

 

+

webpack 등을 이용하여  entity 를 정의해놓은 파일 또한 번들링.

 

= 해당 파일을 찾지 못해 entity 정보를 불러오지 못하여 EntityMetadataNotFoundError 같은 오류가 발생.

 

해결

 

import 나 require 등을 통해 미리 entity 들을 load 해야 함.

(typeorm의 Entity 데코레이터로 인해 MetadataArgsStorage에 등록 됨)

import { getMetadataArgsStorage } from 'typeorm';

entities: getMetadataArgsStorage().tables.map((table) => table.target)