NestJS enviroment file 자동으로 적용하기
안녕하세요. 알렉스 입니다. 이번에는 NestJS을 활용하면서 환경변수 파일을 쓸때 dotenv npm을 활용했습니다. 하지만 위 방법은 매 코드마다 적용을 해야하는 불편함이 있었습니다.
'@nestjs/config'를 사용하면 따로 import할 필요 없이 자동으로 env파일이 적용됩니다.
더 자세한 사항에 대해서는 공식 문서를 참고해 주시기 바랍니다.(링크)
1. npm모듈 설치
'@nestjs/config' 모듈을 설치해 줍니다.
$ npm i --save @nestjs/config
2. 'app.module.ts'에 코드 작성
// /src/app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [ConfigModule.forRoot()],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
'app.module.ts'에 위와같은 코드를 작성해 줍니다.
# /.env
#DataBase
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=user
DB_PASSWORD=awifniedls
DB_DATABASE=excercise1
위 와같이 env파일을 작성해 줍니다.
// /src/app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
ConfigModule.forRoot(),
TypeOrmModule.forRoot({
type: 'mysql',
host: process.env.DB_HOST,
port: +process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
autoLoadEntities: true,
synchronize: true,
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
TypeOrmModule의 forRoot에서 환경변수를 입력해 줍니다.
이후 NestJS에서 정상적으로 환경변수를 읽는다는것을 알수 있습니다.
env파일을 NestJS로 검증하는 방법도 있습니다. 아래 글을 참고해 주시기 바랍니다.
NestJS enviroment file이 서버 실행전에 제대로 작성됬는지 자동으로 확인
댓글
댓글 쓰기