Nest.js service 주입 관련

Views:
9
Category:
Post
Posted on:
2024. 7. 1.

Nest.js service 주입 관련

Nest.js를 사용하며 module, service등을 주입하며 헷갈려 기록.

// another.module.ts
@Module({
  imports: [CommonService],
  providers: [AnotherService, CommonService]
})

위의 방식은 잘못된 사용 방식이다.

another모듈 안에서 commonService를 주입 받아 사용하고 싶었음.

commonServ ice를 import 해 왔고, anotherModule에서

사용하기 위해 providers에 등록 하였음. (에러남)

바른 방식:

@Module({
  providers: [CommonService],
  exports: [CommonService]
})

// another.module.ts
@Module({
  imports: [CommonModule],
  providers: [AnotherService]

포인트

1.providers: 모듈 내부에서 사용할 서비스 정의

2.exports: 다른 모듈에서 사용할 수 있도록 공개하는 서비스 정의

3.다른 모듈에서 서비스를 주입받고 싶을때 모듈만 import한다.

4.서비스는 모듈을 통해서 공유 되어야 함.

5.imports는 모듈만 받을 수 있습니다 (서비스를 직접 임포트 할 수 없음)

# Nest.js service 주입 관련 

Nest.js를 사용하며 module, service등을 주입하며 헷갈려 기록.

```js
// another.module.ts
@Module({
  imports: [CommonService],
  providers: [AnotherService, CommonService]
})
```
위의 방식은 잘못된 사용 방식이다.

another모듈  안에서 commonService를 주입 받아 사용하고 싶었음.

commonServ ice를 import 해 왔고, anotherModule에서 

사용하기 위해 providers에 등록 하였음. (에러남)

바른 방식:
```js
@Module({
  providers: [CommonService],
  exports: [CommonService]
})

// another.module.ts
@Module({
  imports: [CommonModule],
  providers: [AnotherService]

```


### 포인트
1.providers: 모듈 내부에서 사용할 서비스 정의

2.exports: 다른 모듈에서 사용할 수 있도록 공개하는 서비스 정의

3.다른 모듈에서 서비스를 주입받고 싶을때 모듈만 import한다.

4.서비스는 모듈을 통해서 공유 되어야 함.

5.imports는 모듈만 받을 수 있습니다 (서비스를 직접 임포트 할 수 없음)