Environment variable adalah cara paling sederhana untuk menyimpan konfigurasi dan data rahasia di luar kode program. Bayangkan kamu baru selesai membuat API, lalu mengunggahnya ke GitHub. Beberapa jam kemudian muncul email peringatan: API key milikmu terlihat publik. Kejadian seperti ini sangat sering dialami pemula, dan penyebabnya hampir selalu sama, yaitu rahasia ditulis langsung di dalam kode.
Di artikel ini, kamu akan belajar apa itu environment variable, cara memakainya di Node.js dengan file .env, dan kesalahan umum yang sebaiknya dihindari.
Apa Itu Environment Variable?
Environment variable adalah pasangan nama dan nilai yang tersimpan di lingkungan tempat aplikasi berjalan, bukan di dalam kode. Aplikasi membacanya saat dijalankan untuk mengetahui hal-hal seperti alamat database, API key, atau mode aplikasi (development atau production).
Di Node.js, semua nilai itu bisa dibaca lewat objek process.env. Penjelasan resminya tersedia di dokumentasi Node.js tentang environment variable.
Contohnya:
const port = process.env.PORT;
console.log(port); // tampil sesuai nilai PORT di lingkunganmu
Mengapa Perlu Memisahkan Konfigurasi dari Kode?
Ada tiga alasan utama.
- Keamanan. API key, password database, dan secret token tidak ikut tersimpan di repositori. Jika repositori bocor, rahasiamu tetap aman.
- Perbedaan lingkungan. Database di laptopmu pasti berbeda dengan database di server. Dengan environment variable, kode yang sama bisa berjalan di keduanya tanpa diubah.
- Kemudahan perubahan. Mengganti nilai konfigurasi cukup dengan mengubah variabel, tanpa menyentuh kode dan tanpa build ulang untuk sebagian kasus.
Prinsip ini sejalan dengan pedoman 12-factor app tentang konfigurasi, yang menyarankan konfigurasi disimpan di lingkungan.
Cara Memakai Environment Variable di Node.js
1. Buat File .env
Buat file bernama .env di folder utama proyek. Setiap baris berisi satu variabel dengan format NAMA=nilai.
PORT=3000
DATABASE_URL=postgres://user:password@localhost:5432/appdb
JWT_SECRET=ganti-dengan-string-acak-yang-panjang
Segera daftarkan file ini ke .gitignore supaya tidak ikut ter-commit. Kalau kamu belum terbiasa, baca dulu panduan gitignore untuk pemula.
.env
.env.local
2. Baca Nilainya dengan dotenv
Node.js tidak membaca file .env secara otomatis lewat cara lama, jadi banyak developer memakai paket dotenv. Pasang dengan npm install dotenv, lalu panggil di baris paling atas file utama.
require('dotenv').config();
const port = process.env.PORT || 3000;
const dbUrl = process.env.DATABASE_URL;
console.log(`Server berjalan di port ${port}`);
Jika proyekmu memakai ES Modules, cukup tulis import 'dotenv/config'; di baris pertama.
3. Tanpa Library: Pakai Flag –env-file
Node.js versi baru (20.6 ke atas) bisa memuat file .env sendiri tanpa paket tambahan.
node --env-file=.env index.js
Cara ini praktis untuk proyek kecil. Namun, cek dulu versi Node.js di komputer dan server kamu sebelum mengandalkannya.
4. Validasi Saat Aplikasi Mulai
Jangan menunggu error muncul di tengah jalan. Periksa semua variabel wajib saat aplikasi dinyalakan.
const wajib = ['DATABASE_URL', 'JWT_SECRET'];
const hilang = wajib.filter((nama) => !process.env[nama]);
if (hilang.length > 0) {
throw new Error(`Environment variable belum diisi: ${hilang.join(', ')}`);
}
Dengan begitu, kesalahan seperti lupa mengisi JWT_SECRET langsung ketahuan. Variabel ini biasanya dipakai untuk autentikasi, seperti yang dibahas di perbandingan JWT vs session.
Hati-Hati di Frontend: Variabel Bisa Dibaca Pengunjung
Di aplikasi frontend, environment variable bekerja berbeda. Nilainya disisipkan ke dalam kode saat proses build, sehingga siapa pun bisa melihatnya lewat browser. Framework seperti Vite dan Next.js bahkan hanya mengekspos variabel dengan awalan tertentu, yaitu VITE_ dan NEXT_PUBLIC_.
Artinya, jangan pernah menaruh secret di variabel berawalan tersebut. Simpan rahasia di sisi server, lalu akses lewat API milikmu.
7 Kesalahan Umum Environment Variable
- Meng-commit file .env ke repositori. Jika sudah terlanjur, cabut lalu buat ulang key yang bocor. Menghapusnya dari riwayat Git saja tidak cukup, karena key mungkin sudah terlihat.
- Tidak membuat file .env.example. Rekan satu tim jadi tidak tahu variabel apa saja yang dibutuhkan. Buat berkas contoh berisi nama variabel tanpa nilai rahasia, lalu commit berkas itu.
- Mengira semua nilai berupa angka atau boolean. Semua nilai di
process.envbertipe string. Akibatnya,if (process.env.DEBUG)tetap bernilai benar walaupun isinya tulisan false. - Lupa me-restart server. Nilai
.envdibaca saat aplikasi mulai, jadi perubahan baru berlaku setelah restart. - Nilai tidak berubah padahal sudah diedit. Biasanya variabel dengan nama sama sudah ada di sistem. Secara bawaan, dotenv tidak menimpa variabel yang sudah ada.
- Memakai secret yang sama di development dan production. Jika key development bocor, production ikut terancam. Pisahkan keduanya.
- Tidak memvalidasi variabel. Hasilnya, error aneh seperti
undefinedbaru muncul jauh dari sumber masalah.
Environment Variable di Production
Jangan mengunggah file .env ke server. Sebagai gantinya, isi variabel lewat panel pengaturan hosting atau platform deploy yang kamu pakai. Di Docker, kamu bisa memakai opsi -e atau --env-file saat menjalankan kontainer.
Selain itu, batasi siapa saja yang boleh melihat nilai tersebut. Jika aplikasimu mulai besar, pertimbangkan layanan pengelola rahasia (secret manager) yang menyediakan kontrol akses dan riwayat perubahan. Untuk melindungi endpoint yang memakai key itu, kamu juga bisa membaca rate limiting API di Express.
Checklist Sebelum Deploy
- File
.envsudah masuk.gitignore - Ada
.env.exampletanpa nilai rahasia - Variabel wajib divalidasi saat aplikasi mulai
- Tidak ada secret di variabel berawalan
VITE_atauNEXT_PUBLIC_ - Secret production berbeda dari development
- Variabel production diisi lewat panel hosting, bukan file
Pertanyaan Seputar Environment Variable (FAQ)
Apakah environment variable aman untuk menyimpan password?
Lebih aman daripada menulisnya di kode, tetapi bukan pengaman mutlak. Siapa pun yang punya akses ke server atau proses aplikasi masih bisa membacanya. Untuk skala besar, gunakan secret manager.
Apa bedanya .env dan .env.local?
Di framework seperti Next.js dan Vite, .env.local biasanya dipakai untuk nilai khusus di komputermu dan tidak di-commit. Aturan prioritasnya bisa berbeda antar framework, jadi cek dokumentasinya.
Apakah file .env harus diunggah ke server?
Tidak. Isi variabelnya langsung di lingkungan server atau platform deploy.
Kesimpulan
Environment variable memisahkan konfigurasi dan rahasia dari kode, sehingga aplikasi lebih aman dan mudah dipindah antar lingkungan. Mulailah dari langkah kecil: buat file .env, masukkan ke .gitignore, baca dengan dotenv atau flag bawaan Node.js, lalu validasi saat aplikasi dijalankan.
Jadi, sebelum kamu mengunggah proyek berikutnya, periksa dulu apakah ada rahasia yang masih tertulis di kode. Satu kebiasaan ini bisa menyelamatkanmu dari masalah besar.
5 Replies to “Environment Variable: Cara Pakai .env di Node.js”