Nest.js에서는 built-in ORM으로 TypeORM을 사용합니다. 하지만 typeorm 2.0에서 3.0으로 업그레이드 되면서 대규모 코드 변경이 진행되었습니다.
대표적으로 Repository의 주입성을 관리해주는 @EntityRepository()가 deprecated됩니다. 이 문제를 해결하기 위해 동적 모듈을 생성하고, 자체적으로 데코레이터를 생성하면서 땜빵식으로 해결하는 방법이 Stack Overflow에 떠돌아 다니는데, 적합한 방법은 아닌 것으로 보입니다.
비단 이 문제 뿐만 아니라 import module이 지원이 안된다던지,
[Error] TypeOrmModule Unable to connect to the database. Retrying...
entity 연결이 아예 안되는 문제가 발생합니다.
[Error] ExceptionHandler No repository for "BoardReopsitory" was found. Looks like this entity is not registered in current "default" connection?
RepositoryNotFoundError: No repository for "BoardReopsitory" was found. Looks like this entity is not registered in current "default" connection?
심지어 typeorm 버전을 2.x.x대로 내려서 package.json을 다시 구성하면 dependency conflict가 발생합니다. @nestjs/typeorm과 typeorm 모듈간 버전 충돌이 발생하고 있습니다.
이 문제들을 접해본 결과 그냥 typeorm 3.0 version을 사용하는게 맞다는 결론에 도달합니다. Nest.js 프로젝트를 최초 시작하면 @nestjs/common @nestjs/core 등 모든 버전이 9.0.0버전으로 맞춰지고 typeorm 최신버전을 설치해도 3.0로 시작됩니다.
Nest.js 공식 홈페이지에 들어가도 기존에 controller => service => Repository로 이어지는 계층간 통신을 사용하지 않는 걸 보면 Nest.js에서도 typeorm 3.0 버전으로 유도하고 있는 상황입니다.
'Programming' 카테고리의 다른 글
개발자 리부트 책 후기 (0) | 2022.10.19 |
---|---|
매개변수(parameter) VS 인수(Argument) 차이점 (0) | 2022.10.15 |
GET POST 차이점 💡 (0) | 2022.10.14 |
Typescript 인터페이스 타입 차이점? (0) | 2022.10.13 |
객체 지향 프로그래밍이란(OPP) (0) | 2022.10.13 |
댓글