🦁️ ConfigModule이 뭔데?
Nest에서 제공하는 Config 패키지 라는게 있다. 이게 무엇이냐면 Nest에서 dotenv(환경변수)를 내부적으로 활용하는 패키지를 제공하는데, 이를 통해 ConfigModule을 동적으로 생성해 볼 수 있다고 한다.
요컨데 ConfigModule을 사용해 미리 env를 설정해두면 다른 모듈에서도 process.env를 통해 접근이 가능하게 되는 것이다!
🦁️ 그래서 어떻게 쓸 수 있는데?
우선 패키지부터 설치해보도록 하자
$ npm i --save @nestjs/config
그 후에 app.module.ts의 @Module({ imports: [] })에 삽입하면 된다
@Module({
imports: [
///////////////////////////////////////////////////////////////////////////
// Enviroment Config // ✨ env 설정 부분
ConfigModule.forRoot({
/** env 파일 등록 */
envFilePath: '.env',
isGlobal: true,
}),
//////////////////////////////////////////////////////////////////////////
// TypeORM // ✨ env를 사용한 부분
TypeOrmModule.forRoot({
type: 'mysql',
host: `${process.env.MYSQL_HOST}`,
port: 3306,
username: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
entities: [
__dirname + '/apis/**/*.entity.*', //
],
synchronize: true,
logging: true,
}),
///////////////////////////////////////////////////////////////////////////
// Modules //
*Module
],
})
export class AppModule {}
공식문서에 따르면 정적 모듈을 가져올때와는 다르게 ConfigModule.forRoot() 메소드를 호출하는데, 이 메소드는 DynamicModule을 리턴하는 정적 메소드라고 한다.
forRoot()의 인자로 ConfigModuleOptions를 받는다는데, 이는 ConfigModule이 원하는 옵션값을 전달하여 원하는 대로 동적으로 ConfigModule을 생성하기 위함이라고 한다.
ConfigModuleOptions의 종류로는 다음과 같은 것들이 있다.
옵션 | 값 | 용도 |
cache | boolean | 액세스 가 느릴 수 있으므로 에 저장된 변수와 관련하여 메서드 의 성능을 향상시키기 위해 전달된 options 객체 process.env의 속성을 설정할 수 있다. |
isGlobal | boolean | 다른 곳에서도 환경 변수를 쉽게 불러와 사용하기 위해서 ConfigModule을 global module로 만들어준다. |
ignoreEnvFile | boolean | env 파일을 사용하고 싶지 않을 때 설정 |
ignoreEnvVars | boolean | |
envFilePath | string | string[] | 기본적으로 패키지는 응용 프로그램의 루트 디렉터리에서 .env 파일을 찾는다. |
encoding | string | |
validate | (config: Record<string, any>) => Record<string, any> | |
validationSchema | any | 환경변수 유효성을 검사 |
validationOptions | Record<string, any> | options 객체를 전달하여 이러한 동작을 변경 |
load | Array<ConfigFactory> | |
expandVariables | boolean | 환경 변수 확장을 활성화 |
참조 : https://velog.io/@kakasoo/Nest%EC%97%90%EC%84%9C-ConfigModule-TypeORM-%EC%93%B0%EA%B8%B0
Nest.js에 ConfigModule 설정
이번 글은 짧은 내용을 다룬다. 아마 dotenv를 사용하다가 Nestjs와 ConfigModule을 사용하려던 사람들은 시행착오를 많이 겪을 것이다. 사실 TypeORM을 써서 발생하는 문제는 아닌데, 이런 상황을 주로
velog.io
참조 : https://wikidocs.net/158584
6.3 Nest에서 제공하는 Config 패키지
앞 절에서는 dotenv 패키지를 직접 사용하는 방법을 살펴보았습니다. 그런데 Nest는 dotenv를 내부적으로 활용하는 @nestjs/config 패키지를 제공합니다. ...
wikidocs.net
참조 : https://docs.nestjs.com/fundamentals/dynamic-modules#config-module-example
Documentation | NestJS - A progressive Node.js framework
Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac
docs.nestjs.com
참조 : https://darrengwon.tistory.com/965
dotenv 대신 @nestjs/config을 사용해야하는 이유 + 활용
docs.nestjs.com/techniques/configuration Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progr..
darrengwon.tistory.com
'📖 TIL > NestJS & TypeScript' 카테고리의 다른 글
[TS] 타입스크립트(TypeScript) (0) | 2022.05.24 |
---|---|
[NestJS] MVC 디자인 패턴 (0) | 2022.04.01 |
[TypeScript] TypeORM (0) | 2022.02.10 |
[NestJS] NestJS와 폴더구조 (0) | 2022.02.09 |