결론 부터 말씀드리면, imports module의 exports service를 providers에 넣어서는 안됩니다.
https://docs.nestjs.com/modules
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [CatsService]
})
export class CatsModule {}
import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';
@Module({
imports: [CatsModule],
})
export class AppModule {}
CatsModule 내에서 exports 하는 어떤 controllers
, providers
도
다시 AppModule의 controllers
, providers
에 추가하면 안됩니다.
Shared modules
In Nest, modules are singletons by default, and thus you can share the same instance of any provider between multiple modules effortlessly.
만약, CatsModule의 CatsService를 AppModule의 provider에 다시 적어 준다면,
@Module({
imports: [CatsModule],
providers: [CatsService],
})
export class AppModule {}
CatsService의 instance는 CatsModule과 AppModule에 각각 생성됩니다.