nest js

NestJs에서 환경변수

호리둥절 2023. 4. 13. 16:37

환경변수 분리하기

환경변수는 보안상 중요한 정보(예: 데이터베이스 비밀번호)를 포함할 수 있기 때문에, 애플리케이션 코드와 분리하여 관리하는 것이 좋습니다. 이를 통해 코드를 외부에 노출하지 않고 보안성을 높일 수 있습니다

 

1. @nestjs/config 패키지 설치하기 

@nestjs/config는 Nest.js에서 환경 변수를 쉽게 처리할 수 있도록 도와주는 패키지입니다. 이 패키지를 사용하면 .env 파일 이외에도, CLI 인자, 환경변수, JSON 파일, YAML 파일, JS 파일 등 다양한 방법으로 설정값을 제공할 수 있습니다.

npm i @nestjs/config

2. env 파일작성하기

# Database
DB_HOST='localhost'
DB_PORT=3306
DB_USERNAME='root'
DB_PASSWORD='1234'
DB_NAME='test'
DB_SYNC=true
DB_LOG=true

3. ConfigModule 설정하기 & 환경 변수 사용하기

패키지 설치와 .env 파일작성을 완료하였다면 appModule에서 ConfigModule을 불러올 수 있습니다.

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BooksModule } from './books/books.module';
import { BookEntity } from './books/entities/book.entity';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot(),
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: process.env.DB_TYPE,
      port: Number(process.env.DB_PORT),
      username: process.env.DB_USERNAME,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_NAME,
      entities: [BookEntity],
      synchronize: Boolean(process.env.DB_SYNC),
    }),
    BooksModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule { }