Latihan 1 dari materi Environment & Config di Node.js — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Buat config per environment dan pemeriksa environment variable.
Kode awal sudah punya process.env.PORT = "3000";, object config dengan development: { debug: true, logLevel: "debug", port: 3000 } dan production: { debug: false, logLevel: "warn", port: 8080 }, dan tiga baris di bawah yang mencetak Dev config:, Prod config: dan Env check:. Semuanya biarkan. Tulis dua function di tempat TODO:
getConfig(env): kembalikan config untuk env itu dengan config[env], atau config.development kalau env-nya gak dikenal: return config[env] || config.development;
validateEnv(required): kumpulkan nama yang belum ada di process.env dengan const missing = required.filter((key) => !process.env[key]);, lalu kembalikan { valid: missing.length === 0, missing }.
Di simulator latihan, PORT sudah diset dan DATABASE_URL belum, jadi output yang diharapkan:
Dev config: {"debug":true,"logLevel":"debug","port":3000}
Prod config: {"debug":false,"logLevel":"warn","port":8080}
Env check: {"valid":false,"missing":["DATABASE_URL"]}
Yang dinilai: output memuat "logLevel":"debug", "port":8080 dan DATABASE_URL; kodenya mencari tiap nama di process.env (misalnya process.env[key]), memakai filter (atau for, forEach, some, every, reduce, map) untuk memeriksa semua nama, dan memilih config dengan kurung siku seperti config[env]. Lalu kodemu dijalankan lagi dua kali: setelah process.env.DATABASE_URL diisi, validateEnv(["PORT", "DATABASE_URL"]) harus memberi valid true dengan 0 nama yang kurang (true|0), dan getConfig("production").port, getConfig("production").debug, getConfig("development").port harus memberi 8080|false|3000.