NestJS - Module

오픈소스·2023년 7월 2일
0

결론 부터 말씀드리면, imports module의 exports service를 providers에 넣어서는 안됩니다.

https://docs.nestjs.com/modules

  • cats.module.ts
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 {}
  • app.module.ts
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에 각각 생성됩니다.

0개의 댓글