본문 바로가기

Nodejs/NestJS

[NestJS] config 불러오기 설정 추가 02

nestjs 에서 config 모듈을 지원하므로  nestjs/config를 사용하면 쉽게 .env 파일을 가져올 수 있음.

import { ConfigModule } from '@nestjs/config';
@Module({
  imports: [ConfigModule.forRoot()],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

 

그런데 여기서 원하는 것은 .env 말고, .env.local, .env.development를 가져오고 싶은 것.

때문에 envFilePath 옵션을 활용해서 NODE_ENV에 따라 파일명을 명시해줘야 함.

 

start:dev 할 때, .env.local을 호출 할 목적으로 NODE_ENV를 local이라 명시 해줌.

    "start:dev": "NODE_ENV=local nest start --watch",

이렇게 되면 process.env.NODE_ENV를 호출 할 때, 설정한 NODE_ENV 환경변수 값이 호출됨.

다만 여기서 변수는 MAC 환경이라는건데, windows 환경에서 NODE_ENV=local을 사용하기 위해서는 cross-env를 설치해야함.

yarn add cross-env
    "start:dev": "cross-env NODE_ENV=local nest start --watch",

이렇게 해줘야 NODE_ENV를 windows 환경에서도 정상 동작합니다.

 

다음 app.module에 envFilePath 설정

const NODE_ENV = process.env.NODE_ENV;
const envFilePath = ".env" + (NODE_ENV == "local" ? ".local" : NODE_ENV == "development" ? ".development" : "");

@Module({
  imports: [ConfigModule.forRoot({ envFilePath })],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

NODE_ENV 값을 변경해가면서 실행해보면 아래와 같은 결과 나오는 것 확인할 수 있음 (단, 미리 .env에 PORT를 변경해둬야함.)

.env
PORT=4000
http://localhost:4000

.env.local
PORT=4001
http://localhost:4001

.env.development
PORT=4002
http://localhost:4002

 

다음엔 typeorm을 위한 config 설정 방법을 살펴보겠습니다.

 

현재까지 코드 보기: https://github.com/close852/nestjs-toy/tree/02

반응형