NestJs에서 dotenv 사용하기

Seunghwa's Devlog·2023년 2월 14일
0

NestJs

목록 보기
9/15
post-thumbnail

일반적으로 외부에 유출되면 안되는 정보들을 하드코딩하지 않고 변수를 파일을 통해 보관하고 런타임 환경에서 가져다 쓰는 방식을 쓰기 위해 dotenv패키지를 사용한다.
또한 환경에 따라 다른 변수를 사용해야 할 때도 사용하기도 한다.

이 패키지를 NestJS에서 사용하고자 하는데, dotenv 패키지를 그대로 쓰는 방법도 있지만 NestJS에서 제공하는 패키지가 존재하기 때문에 그걸 써보도록 하자.

ConfigModule

npm i --save @nestjs/config

패키지를 명령어를 이용해 설치해준다.

// app.module.ts

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [ConfigModule.forRoot()],
})
export class AppModule {}

ConfigModule을 불러와서 app.module.ts에 import한다.

// app.module.ts

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [ConfigModule.forRoot({ isGlobal: true })],
})
export class AppModule {}

추가로, 모든 module에서 ConfigModule을 사용하고 싶다면 isGlobal: true 옵션을 사용해준다.

// app.module.ts

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';

@Module({
  imports: [ConfigModule.forRoot({ isGlobal: true })],
  provdiers: [ConfigService],
})
export class AppModule {}

ConfigService를 사용하게 되면

// app.service.ts
import { ConfigService } from '@nestjs/config';
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  constructor(private readonly configService: ConfigService) {}
  getHello(): string {
    return this.configService.get('PORT'); // process.env.PORT와 같은 역할
  }
}

ConfigService 의존성 주입을 통해 환경변수를 불러올 수 있다.

참고링크: https://docs.nestjs.com/techniques/configuration#configuration

profile
에러와 부딪히고 새로운 것을 배우며 성장해가는 과정을 기록합니다!

0개의 댓글