Config Module
Penjelasan
@nestjs/config membungkus dotenv dengan cara yang lebih "NestJS-way" — didaftarkan sebagai module (ConfigModule.forRoot()) di AppModule, lalu ConfigService di-inject ke Service/Controller mana pun yang butuh baca environment variable, alih-alih mengakses process.env langsung di banyak tempat.
Contoh Konsep
// npm install @nestjs/config
// app.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }), // tersedia di semua module, tidak perlu import berulang
],
})
export class AppModule {}
// produk.service.ts
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class ProdukService {
constructor(private configService: ConfigService) {}
getApiKey() {
return this.configService.get<string>('API_SECRET_KEY');
}
}
Praktikum
Tulis contoh ConfigModule.forRoot({ isGlobal: true }) di AppModule. Buat MailService yang meng-inject ConfigService, method getMailHost() yang mengembalikan this.configService.get('MAIL_HOST').
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
isGlobal: true di ConfigModule.forRoot() membuat ConfigService bisa di-inject di MODULE MANA PUN tanpa perlu meng-import ConfigModule berulang-ulang di tiap module fitur — tanpa opsi ini, tiap module yang butuh ConfigService harus meng-import ConfigModule sendiri-sendiri.