Environment Variable — BAB 12
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah menyelesaikan halaman ini, kamu diharapkan dapat:
- Menjelaskan arti dan kegunaan dari Environment Variable (Variabel Lingkungan).
- Menggunakan berkas
.envuntuk menyimpan data konfigurasi rahasia. - Mengakses variabel lingkungan di dalam kode TypeScript menggunakan
process.env.
Pendahuluan
Section titled “Pendahuluan”Saat kamu membuat aplikasi sekolah yang terhubung ke database atau API luar, kamu membutuhkan alamat IP database dan password akses. Menuliskan password tersebut langsung di dalam kode program (hardcoded) adalah kesalahan fatal yang membuat database-mu mudah diretas jika kodenya di-upload ke GitHub.
Kita harus memisahkan data rahasia tersebut ke dalam file khusus bernama Environment Variable.
Penjelasan: Cara Kerja Berkas .env
Section titled “Penjelasan: Cara Kerja Berkas .env”Environment Variable adalah variabel yang nilainya disimpan di luar kode program, yaitu di tingkat sistem operasi atau di dalam berkas konfigurasi khusus bernama .env (dibaca: dot-env).
Di Node.js/TypeScript, kita membaca variabel tersebut menggunakan objek bawaan:
process.env.NAMA_VARIABELLangkah implementasi .env:
- Install library
dotenvuntuk membaca file.env:npm install dotenv. - Buat file bernama
.envdi folder utama project (sejajar denganpackage.json(BAB 11)). - Tulis data rahasia dengan format
KEY=VALUE. - Muat konfigurasinya di awal program:
import "dotenv/config".
Analogi Kehidupan Sehari-hari: Kunci Brankas di Laci Rahasia
Section titled “Analogi Kehidupan Sehari-hari: Kunci Brankas di Laci Rahasia”Bayangkan kamu menulis instruksi untuk guru pengganti di sekolah:
Tugas Guru Pengganti:- Datang ke kantor- Buka lemari arsip- Masukkan kunci nomor [KUNCI_RAHASIA] untuk membuka brankasKamu tidak menulis angka kunci aslinya (misal: 12345) di papan tulis kelas yang bisa dibaca semua siswa. Kamu menaruh kunci fisik di laci rahasiamu yang hanya diketahui oleh guru pendidik.
[KUNCI_RAHASIA] di kertas instruksi adalah nama Environment Variable. Kunci aslinya di laci adalah isi file .env.
Visual Illustration: Alur Pembacaan .env
Section titled “Visual Illustration: Alur Pembacaan .env”File .env (Rahasia): PASSWORD_DB=rpl123 │ ▼ di-load oleh dotenvAplikasi TypeScript: process.env.PASSWORD_DB ──► mengembalikan "rpl123" secara aman ✓Mari Mencoba: Simulasi Login dengan Password .env
Section titled “Mari Mencoba: Simulasi Login dengan Password .env”Mari buat simulasi mengambil password dari file .env di src/bab12/test-env.ts.
Langkah 1: Buat file .env di folder utama projectmu
Section titled “Langkah 1: Buat file .env di folder utama projectmu”PORT=3000PASSWORD_DATABASE=koperasiRpl2026Langkah 2: Buat berkas src/bab12/test-env.ts
Section titled “Langkah 2: Buat berkas src/bab12/test-env.ts”// Muat dotenv di baris paling atasimport "dotenv/config";
const portAplikasi = process.env.PORT ?? "8080"; // gunakan default jika tidak adaconst passwordDb = process.env.PASSWORD_DATABASE;
console.log("=== PENGUJIAN ENVIRONMENT VARIABLE ===");console.log(`Port Aplikasi : ${portAplikasi}`);
if (passwordDb !== undefined) { console.log(`Password Database : [TERKUNCI AMAN] (${passwordDb.substring(0, 4)}***)`);} else { console.log("⚠ Peringatan: Password database tidak ditemukan di file .env!");}Jalankan dengan perintah:
tsx src/bab12/test-env.tsOutput
Section titled “Output”=== PENGUJIAN ENVIRONMENT VARIABLE ===Port Aplikasi : 3000Password Database : [TERKUNCI AMAN] (kope***)Common Mistakes
Section titled “Common Mistakes”- Mengupload file
.envke GitHub: Ini adalah kesalahan paling sering dan fatal. Siapapun di internet bisa melihat password database-mu.- Solusi: Selalu masukkan nama file
.envke dalam file.gitignore(BAB 11) sebelum melakukan commit Git. Sebagai gantinya, buatlah file.env.examplekosong sebagai contoh panduan bagi developer lain.
- Solusi: Selalu masukkan nama file
Best Practice
Section titled “Best Practice”- Gunakan format nama variabel
UPPER_SNAKE_CASE(semua huruf besar dipisahkan garis bawah) untuk semua key di dalam file.env:DATABASE_URL=...,API_KEY=....
Ringkasan
Section titled “Ringkasan”- Environment Variable menyimpan data sensitif/konfigurasi di luar kode program.
- Berkas
.envdiletakkan di root project dan wajib dimasukkan ke.gitignore. - Dibaca di TypeScript menggunakan syntax
process.env.NAMA_KEYdibantu librarydotenv.
Latihan
Section titled “Latihan”- Buat file
.envdi root projectmu dan tambahkan variabelNAMA_SEKOLAH="SMK Negeri Amanah". - Buat file latihan untuk membaca dan mencetak isi variabel tersebut menggunakan
process.env.