Open utterances-bot opened 1 year ago
MongooseModule.forRoot(config().db.mongodbURI, { useNewUrlParser: true, useUnifiedTopology: true, }),
몽고모듈을 이용할때는 registerAsync를 사용안해줘도 env 파일에 있는 값을 잘 가져오는데 혹시 이유 아시나요??
@SeungYn
안녕하세요~ 먼저 nestjs에서 모듈을 가져올 때 forRoot와 registerAsync는 이름에서 알수 있는것처럼 동기적, 비동기적 모듈 설정을 해주는 역할을 합니다.
위에 언급을 해주신 코드 조각에서 forRoot() 안에 config()의 경우 프로젝트 내의 설정파일(보통은 .env)의 정보를 가져오게됩니다. 이 때 저 설정파일에 있는 값을 참고하여 process.env에 저장하게 됩니다. 그리고 저 모듈을 등록할 때 process.env를 참고하여 db.mongodbURI를 가져오게 됩니다.
이렇게 일반적으로 순차적인 로딩을 통해 가져온다면 동기 비동기로 모두 동작을 하게 됩니다.
다만 registerAsync로 모듈을 가져올 때.. 즉 비동기적으로 모듈을 로드할 때는 위 예제 코드에서 언급된 바와 같이
JwtModule.registerAsync({
useFactory: async () => ({
secret: process.env.JWT_KEY,
signOptions: { expiresIn: '60s' },
}),
}),
useFactory를 통해 비동기적으로 설정을 가져오고 모듈을 로드합니다. 보통 registerAsync는 useFactory, inject, imports 등을 사용하여 모듈 로드 시 사용하게 됩니다.
덕분에 저도 다시한번 찾아보게 되네요 ^^ 질문 주셔서 감사하고 위 글이 답변이 되셨으면 합니다.
감사합니다
Nest.Js에서 @Module의 속성에서 process.env 사용하기 | MHLab blog
블로그용 작은 프로젝트를 만들다가… 이번에 Nest.Js에서 Jwt쓰기 주제로 포스팅을 준비중이다. 근데 처음부터 다시 설치해서 하려니까 몇 가지 막히는 부분이 있었다. 이런 코드가 있다. 근데 @Module 안에서 process.env로 설정파일에 접근하려 했다. 근데 아래와 같이 에러가
https://elfinlas.github.io/nest_js/230213_nestjs_module_config_load/