board.service.ts 에서 아래와 같이 다른 서비스를 이용하려니까 발생한 문제

@Injectable()
export class BoardService {
  constructor(
    private readonly hashtagService: HashtagService,
    private readonly categoryService: CategoryService,
    private readonly boardToCategoryService: BoardToCategoryService,
    private readonly hashtagToBoardService: HashtagToBoardService,
    @InjectRepository(Board)
    private readonly boardRepository: Repository<Board>,
  ) {}

 

 

에러문구

 ERROR [ExceptionHandler] Nest can't resolve dependencies of the BoardService (HashtagService, CategoryService, ?, HashtagToBoardService, BoardRepository). Please make sure that the argument BoardToCategoryService at index [2] is available in the BoardModule context.

Potential solutions:
- Is BoardModule a valid NestJS module?
- If BoardToCategoryService is a provider, is it part of the current BoardModule?
- If BoardToCategoryService is exported from a separate @Module, is that module imported within BoardModule?
  @Module({
    imports: [ /* the Module containing BoardToCategoryService */ ]
  })

 

 

해결방식

1. 오류내용을 확인 -> 잘 이해가 안된다.

2. 오류메세지를 구글링 -> module의 imports 부분에 추가를 해주거나 중복된것이 있는지 확인해야 한다고함.

3. 다시 오류메시지 확인

->  솔류션에 적혀있는 대로 내가 사용하려는 서비스가 BoardModule의 일부분이 아니였다.

 

오류 코드

import { BoardController } from './board.controller';
import { BoardService } from './board.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Board } from '../../entities/Board.entity';

@Module({
  imports: [
    TypeOrmModule.forFeature([Board]),
  ],
  controllers: [BoardController],
  providers: [BoardService],
})
export class BoardModule {}

 

해결한 코드

import { BoardController } from './board.controller';
import { BoardService } from './board.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Board } from '../../entities/Board.entity';
import { HashtagModule } from '../hashtag/hashtag.module';
import { HashtagToBoardModule } from '../hashtag_board/hashtagToBoard.module';
import { BoardToCategoryModule } from '../board_category/boardToCategory.module';
import { CategoryModule } from '../category/category.module';

@Module({
  imports: [
    TypeOrmModule.forFeature([Board]),
    CategoryModule,
    HashtagModule,
    BoardToCategoryModule,
    HashtagToBoardModule,
  ],
  controllers: [BoardController],
  providers: [BoardService],
  exports: [BoardService],
})
export class BoardModule {}

 

< 추가로 설정해야하는 부분 >

imports 한 각 module에 내가 사용할 service를 exports 해줘야한다.

예시

import { Module } from '@nestjs/common';
import { ReplyController } from './reply.controller';
import { ReplyService } from './reply.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Reply } from '../../entities/entity.index';

@Module({
  imports: [TypeOrmModule.forFeature([Reply])],
  controllers: [ReplyController],
  providers: [ReplyService],
  exports: [ReplyService], // <--- 이 부분을 써줘야 다른 곳에서 서비스 사용가능
})
export class ReplyModule {}

 

 

마치 app.module.ts 에서 내가 만든 서비스를 사용하기 위해서 다른 모듈을 다 imports에 넣듯이

여기서도 같은 원리로 내가 원하는 서비스를 포함하는 모듈을 imports에 넣으면 되는 것이였다.

+ Recent posts