일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 파이썬
- c#
- Spring
- Python
- 마이바티스
- github
- AWS
- Kotlin
- 리액트
- VOA
- springboot
- docker
- 코틀린
- Winform
- Java
- MySQL
- react
- 스프링
- mybatis
- DataGridView
- design pattern
- 도커
- 리팩토링
- 스프링부트
- git
- machine-learning
- 쿠버네티스
- Spring Boot
- kubernetes
- 자바
Archives
- Today
- Total
보뇨 다이어리
Nest can't resolve dependencies of the ~Service 에러 본문
반응형
NestJS 다시 공부할겸 겸사겸사 내용 정리
DI 를 통해서 제어역전이 일어나는데 Interface 를 통해 의존을 넣을경우 @Inject 없을때 제목과 같은 에러가 나옴
1 2 3 4 5 6 7 8 9 10 | [Nest] 59577 - 11/25/2024, 4:19:43 PM LOG [NestFactory] Starting Nest application... [Nest] 59577 - 11/25/2024, 4:19:43 PM ERROR [ExceptionHandler] Nest can't resolve dependencies of the AppService (?). Please make sure that the argument "AppSimpleRepository" at index [0] is available in the AppModule context. Potential solutions: - Is AppModule a valid NestJS module? - If "AppSimpleRepository" is a provider, is it part of the current AppModule? - If "AppSimpleRepository" is exported from a separate @Module, is that module imported within AppModule? @Module({ imports: [ /* the Module containing "AppSimpleRepository" */ ] }) | cs |
해결방법으로는 @Inject 까지 직접 명시적으로 적어줘야함
이때 당연히 ~Module 내에서도 provide 와 useClass 선언까지 해줘야함
구현체가 하나밖에 없는데도 이렇게 명시적으로 적어줘야한다는게 좀 특이한데 좀더 알게되면 적어두도록하겠음!
1 2 3 4 5 6 7 8 9 10 11 12 13 | import { Injectable } from '@nestjs/common'; export interface AppRepository { getHello(): string; } @Injectable() export class AppSimpleRepository implements AppRepository { getHello(): string { return 'Hello World!!!!'; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import { Inject, Injectable } from '@nestjs/common'; import { AppRepository } from './app.repository'; @Injectable() export class AppService { constructor( @Inject('AppSimpleRepository') private readonly appRepository: AppRepository, ) {} getHello(): string { return this.appRepository.getHello(); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { AppSimpleRepository } from './app.repository'; @Module({ imports: [], controllers: [AppController], providers: [ AppService, { provide: 'AppSimpleRepository', useClass: AppSimpleRepository, }, ], }) export class AppModule {} | cs |
반응형