에러 코드가 상당히 긴편이다,,
NestJS에서 api를 개발하고 돌려볼려는데 갑자기 에러가 나왔다.
"Nest can't resolve dependencies of the FollowsService (?). Please make sure that the argument Repository at index [0] is available in the Appmodule"
에러로그를 보면 index[0] 위치의 Repository가 Module에서 사용가능한지 확인을 요구하고 있다.
여기서 Index[0]이란?
Service 클래스의 생성자에 주입한 첫번째 인자를 뜻한다.
@Injectable()
export class FollowsService {
constructor(
private readonly followsQueryRepository: FollowsQueryRepository // 이부분이다.
) {}
constructor 내부에 첫번째로 주입된 Repository 를 가리킨다.
( 생성자가 만약 한개 더있어서 한줄 아래에 생긴다면 그건 Index[1]인 셈이다. )
해당 App의 Module 내부에서도 Repository를 주입시켜줘야한다.
여기서 잠깐..!
왜 이렇게 주입시켜주는게 모른다면 꼭 한번 보고오자.
도움이 될 것이다.
https://ilikezzi.tistory.com/13
다시 본론으로 돌아와서 Error을 해결해보자.
위의 내용까지 잘 따라왔다면 이제 Error해결을 위해서 두가지를 의심해봐야한다.
1. 해당 app의 Module
해당 app의 module에 들어가면 관련 연결 정보들이 보일 것 이다.
@Module({
imports: [ConfigModule, TypeOrmModule.forFeature([KeywordFollowEntity])],
controllers: [FollowsController],
providers: [FollowsService, FollowsQueryRepository, FollowsDetailQueryRepository],
exports: [FollowsService],
})
export class FollowsModule {}
여기서 아까 Index[0]에 해당하는 Repository 관련내용이 누락 됬는지 확인 하고 추가하면 된다.
나는 TypeOrm을 사용하고 있어서 import에 forfeature()라는걸 써줘야한다.
forfeature()함수는 현재의 범위에서 Repository를 등록 해준다.
이부분도 제대로 작성되었는지 확인해 본다.
이래도 Error가 그대로면 두번째 방법을 사용하자.
2. AppModule.ts
AppModule.ts에 가면 Module import정보들이 좌르륵 나올 것이다.
AppModule.ts에서 맨 아래쪽부분으로 내리다보면 사진처럼 controller , provider
이 두개가 있을텐데 위에 import 시킨 내용이랑 중복되는 내용을 넣게되면 에러가 발생한다.
// 변경전
controller: [AppController, FollowsController],
provider: [AppService, FollowsService]
// 변경후
controller: [AppController],
provider: [AppService]
따라서 AppController 와 AppService를 제외하고 지워주면 해결이 될 것이다.
'Web > NestJS' 카테고리의 다른 글
[Nest.JS] @Module의 특징과 공유모듈(shared module) 사용하기 (0) | 2023.02.19 |
---|---|
[Nest.JS] CurrentUser()보다 편리한 커스텀 데코레이터 (0) | 2023.02.12 |
[Nest.JS] IoC , DI란? 그리고 NestJS의 꽃 Provider (0) | 2023.01.31 |
[Nest.JS] ParseIntPipe "Validation failed numeric string is expected" Error (0) | 2023.01.19 |
[Nest.JS] class-transform의 plainToInstance를 활용한 Object Mapping (0) | 2023.01.19 |