Node.js

NestJs configModule 적용

안모 2023. 9. 4. 21:08

어플리케이션은 종종 다른 환경에서 실행된다. 
일반적으로 로컬 환경은 로컬DB 인스턴스에만 유효하고, 프로덕션 환경에서는 별도의 환경을 구성한다.
환경에 따라 달라지는 환경변수를 저장하고 활용하는 방법은 보통 .env 방식을 이용한다.

Node.JS에서는 process.env를 통해 .env파일에 저장된 환경변수를 활용할 수 있다. 

NestJS는 ConfigModule을 통해 보다 발전된 환경변수 관리를 제공한다.

/*config/database.config.ts*/
export default registerAs('database', () => ({
  host: process.env.DATABASE_HOST,
  port: process.env.DATABASE_PORT || 5432
}));
  • registerAs() 함수를 사용하면 네임스페이스 된 config 객체를 반환 할 수 있다.
  • .env파일과 마찬가지로 환경 변수 {Key: Value} 쌍이 포함된다.

 

/*AppModule*/
import databaseConfig from './config/database.config';

@Module({
  imports: [
    ConfigModule.forRoot({
      load: [databaseConfig],
    }),
  ],
})
export class AppModule {}
  • forRoot의 load 옵션을 사용하여 네임스페이스 구성을 로드한다.

 

/*some service*/
constructor(
  @Inject(databaseConfig.KEY)
  private dbConfig: ConfigType<typeof databaseConfig>,
) {}

 

  • 네임스페이스를 직접 삽입하는 것으로 타이핑의 이점을 얻을 수 있다.

 

NestJS 공식 홈페이지에서 다양한 ConfigModule 활용법을 소개하고 있다.

 

출처:

https://docs.nestjs.com/techniques/configuration