환경변수를 중앙 설정으로 읽고 시작 시 검증합니다.
ConfigModule은 환경별 값을 provider로 제공하고 ConfigService로 읽습니다. 비밀 값은 저장소에 넣지 않고 배포 환경에서 주입합니다.
필수 설정 누락과 잘못된 타입은 요청 중간이 아니라 애플리케이션 시작 단계에서 실패시킵니다.
공개 설정과 비밀 설정을 분리하고 로그에 전체 환경변수를 출력하지 않습니다.
process.env 값을 여러 파일에서 직접 파싱하면 기본값과 검증 규칙이 달라집니다.
로컬 프로젝트에서 확인해보세요API_TIMEOUT을 100~10000 범위 정수로 검증하는 factory를 작성하세요.
import "reflect-metadata";
import { Controller, Get, Module } from "@nestjs/common";
import { ConfigModule, ConfigService } from "@nestjs/config";
import { NestFactory } from "@nestjs/core";
@Controller()
class AppController {
constructor(private readonly config: ConfigService) {}
@Get() home() {
return {
environment: this.config.get("NODE_ENV", "development"),
secretExposed: false,
};
}
}
@Module({
imports: [ConfigModule.forRoot({ isGlobal: true })],
controllers: [AppController],
})
class AppModule {}
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(4173, "0.0.0.0");
}
bootstrap();