반응형
NestJS - 4편 (모듈~config파일)
모듈(Module) 개념
모듈이란? 클래스나 함수같은 한가지 일만하는 컴포넌트가 아닌, 여러 컴포넌트를 조합해 더 큰 작업을 수행하는 단위.
우리가 그동안 다른 곳에서 작성한 파일을 불러와 import
가 가능했던 것은
작성했던 파일의 아래에서 export
명령어를 통해 내보내줬기 때문이다.
전역 모듈 사용이 좋은 방법은 아니지만 꼭 필요하다면 선언하는 방법도 있다.
@Global()
@Module({
providers: [CommonService],
exports: [CommonService],
})
export class CommonModule { }
동적 모듈(Dynamic Module)
동적 모듈이란? 모듈이 생성될 때 동적으로 어떠한 변수들이 정힌다.
대표적으로 Config 모듈이있다. (dotenv)
NodeJS의 대표 Config 모듈 (dotenv)
설치 : JS-npm i dotenv
Typescript-npm i --save-dev @types/dotenv
이용 : 루트 디렉토리에 .env 확장자 파일 생성 후 쓰고싶은 곳에서 import * as dotenv from 'dotenv';
예제
- .env파일 생성
.development.env
파일
DATABASE_HOST=local
.production.env
파일
DATABASE_HOST=prod-db
package.json 파일 scripts 수정
"scripts": { ... "start:dev": "NODE_ENV=development nest start --watch", ... }
NODE_ENV에 따라 설정하기
import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import * as dotenv from 'dotenv'; import * as path from 'path'; dotenv.config({ path: path.resolve( (process.env.NODE_ENV === 'production') ? '.production.env' : '.development.env' ) }); async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000); } bootstrap();
원하는곳에서 불러와 사용하기
@Controller() export class AppController { @Get() getHello(): string { return process.env.DATABASE_HOST; } }
Nest에서 Config 사용하기
Nest에서는 dotenv를 내부적으로 사용하는 @nestjs/config를 제공한다.
설치 : npm i --save @nestjs/config
위의 dotenv사용법과 2번까지는 똑같고 3번부터는 조금 다르다.
NODE_ENV에 따라 설정하기
import { ConfigModule } from '@nestjs/config'; @Module({ imports: [ConfigModule.forRoot({ envFilePath: (process.env.NODE_ENV === 'production') ? '.production.env' : '.development.env' })], controllers: [AppController], providers: [AppService, ConfigService], }) export class AppModule { }
원하는 곳에서 불러와 사용하기
import { Controller, Get } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; @Controller() export class AppController { constructor( private readonly configService: ConfigService, ) { } @Get('/db-host-from-config') getDatabaseHostFromConfigService(): string { return this.configService.get('DATABASE_HOST'); } }
참조 : NestJS로 배우는 백엔드 프로그래밍
반응형
'[NestJS]' 카테고리의 다른 글
[NestJS] - 6편 (DB연결하기 TypeORM 트랜잭션 마이그레이션) (0) | 2022.04.21 |
---|---|
[NestJS] - 5편 (파이프) (0) | 2022.04.20 |
[NestJS] - 3편 (프로바이더) (0) | 2022.04.19 |
[NestJS] - 2편 (설치~인터페이스) (0) | 2022.04.18 |
[NestJS] - 1편 (NestJS란?) (0) | 2022.04.18 |