Junior #config#env#validation#joi
ConfigModule trong NestJS và validate biến môi trường lúc khởi động
⚡ Trả lời nhanh
ConfigModule.forRoot đọc .env và biến môi trường, cung cấp ConfigService để inject. Dùng validationSchema (Joi) hoặc hàm validate (zod/class-validator) để app fail fast khi thiếu hoặc sai biến. isGlobal: true giúp không phải import ở từng module.
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
validationSchema: Joi.object({
NODE_ENV: Joi.string().valid('development', 'production', 'test').required(),
PORT: Joi.number().default(3000),
DATABASE_URL: Joi.string().uri().required(),
}),
}),
],
})
export class AppModule {}
@Injectable()
export class DbService {
constructor(private config: ConfigService) {}
url = this.config.getOrThrow<string>('DATABASE_URL');
}
- Biến env luôn là string; validation (Joi
number()) giúp ép kiểu về đúng kiểu. getOrThrowném lỗi nếu thiếu, an toàn hơnget.registerAs('db', () => (...))gom cấu hình theo namespace, cho phép inject typed config.