[NestJS]  환경변수(env) 설정 및 사용

Peter·2021년 9월 12일
1

nestjs

목록 보기
11/11
post-thumbnail

1. 패키지 설치

> yarn add @nestjs/config

환경변수 관리를 위해서 config 패키지를 설치합니다.

2. ConfigModule 설정

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

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

설치한 config 패키지 설정을 추가합니다.
AppModule에서 직접 import해도 상관없는데, ConfigModule 설정 부분이 코드가 많아지게 되는 경우 AppModule 이 복잡해 보일 수 있어서 별도의 디렉토리를 만들고 ConfigurationModule 을 만들어서 AppModule에서 import하도록 설정했습니다.

isGlobal: true 옵션을 주면 글로벌 Module 로 설정되어 어떤 모듈에서든지 ConfigService 를 inject 할 수 있습니다.

3. 환경변수 정의

CHAT_SERVER_IP=127.0.0.1

(.env)
프로젝트 root 폴더에 .env 파일을 만들고 위와 같이 환경변수를 설정할 수 있습니다.
별도의 옵션을 명시하지 않는 경우, .env 파일에 환경변수가 있다고 암묵적으로 약속이 되어 있습니다.
환경변수를 참조할 파일 path를 변경하고 싶으면 envFilePath 옵션으로 설정을 바꾸면 됩니다. (Reference 참고)

4. 환경변수 사용

import { Controller, Get, Render } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Controller()
export class AppController {
  constructor(private readonly configService: ConfigService) {}

  @Get()
  @Render('index')
  root() {
    const chatServerIP = this.configService.get<string>('CHAT_SERVER_IP');
    console.log(chatServerIP);
    return { chatServerIP };
  }
}

위와 같이 ConfigService 를 어디에서든지 inject 하여 원하는 환경변수를 조회하여 사용할 수 있습니다.

Reference

NestJS 공식문서에 더 상세한 설정 방법이 나와 있습니다.
https://docs.nestjs.com/techniques/configuration

0개의 댓글