저장을 습관화
NestJS - .env 본문
express.js 에서는 .nev을 사용하려면 dotenv를 설치해야 하지만
NestJS에서는 @nestjs/config에 포함되어 있다.
// .env 사용을 위한 nestjs config 설치
$ npm install @nestjs/config
- 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({ isGlobal: true })],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
imports에 ConfigModule.forRoot 추가
isGlobal은 모든 모듈에 동일하게 적용할 것이냐는 의미이니 그때그때 상황봐서 설정
어플리케이션의 루트디렉토리에 .env 파일을 생성하고,
필요한 내용을 입력한다
.env의 내용을 가져올 파일에선
process.env.(옵션이름) 이라고 입력한다
import는 필요없다
[추가 - 2023.11.04]
타입스크립트를 사용할 때, .env의 내용을 불러오는 곳이 class라면,
모든 class는 constructor(생성자)를 가지는데 여기서 configService를 사용하는 방법도 있다.
- app.module.ts 설정 추가
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [ConfigModule.forRoot({ isGlobal: true })],
controllers: [AppController],
providers: [AppService, ConfigService],
})
export class AppModule {}
providers에 ConfigService 추가하고
.env의 내용이 아래와 같을때
SECRET="ConfigService로 .env의 내용을 불러오는 테스트 중입니다."
PORT=3030
이 내용을 불러오는 곳(이번 예시에서는 app.service.ts)에서 아래와 같이 작성해주면
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class AppService {
constructor(private readonly configService: ConfigService) {}
getHello(): string {
return this.configService.get('SECRET');
}
}
.env의 내용을 잘 가져오는 것을 확인할 수 있다.
반드시 이렇게 사용해야하는 것은 아니고
process.env.(옵션), this.configService.get(옵션) 두가지 다 사용법을 알아두자
'공부 > node.js' 카테고리의 다른 글
NestJS - 회원 가입 API 개발시 패스워드 암호화하기, mongoose virtual field 사용하기 (0) | 2023.10.02 |
---|---|
에러 기록 - export class Cat extends Document... ReferenceError: Document is not defined (0) | 2023.10.02 |
NestJS - mongoose 사용 시 useNewUrlParser 옵션 설정 (0) | 2023.09.30 |
pipe와 middleware의 차이점 (0) | 2023.09.30 |
express - 미들웨어 작성 기초 (0) | 2023.09.29 |