Skip to main content

Command Palette

Search for a command to run...

๐Ÿ” Memahami Environment Variable di Next.js (Dev vs Production)

Updated
โ€ข2 min read
๐Ÿ” Memahami Environment Variable di Next.js (Dev vs Production)

Pendahuluan

Saat pertama kali deploy aplikasi Next.js, banyak developer mengalami masalah seperti:

  • data tidak muncul

  • API gagal di-fetch

  • auth error padahal di local aman

Penyebabnya sering kali bukan bug di kode, tapi Environment Variable (ENV) yang salah konfigurasi.

Di artikel ini, kita bahas cara kerja ENV di Next.js secara praktis dan mudah dipahami.


Apa Itu Environment Variable?

Environment Variable adalah nilai konfigurasi yang:

  • tidak ditulis langsung di kode

  • bisa berbeda antara development dan production

  • biasanya berisi URL, token, atau secret

Contoh:

API_URL=https://api.example.com

File ENV yang Dibaca Next.js

Next.js TIDAK membaca semua file .env secara sembarangan.

Urutan prioritasnya:

  1. .env.local โœ…

  2. .env.development

  3. .env.production

  4. .env

๐Ÿ“Œ .env.example hanya template, tidak pernah dibaca.


Kenapa .env.local Direkomendasikan?

Karena:

  • otomatis dibaca Next.js

  • tidak ikut ke-commit (aman)

  • bisa beda di tiap server

Contoh membuatnya:

cp .env.example .env.local

Perbedaan ENV Server & Client

Ini bagian paling sering bikin error.

โŒ ENV tanpa NEXT_PUBLIC_

API_SECRET=xxxxx

โŒ Tidak bisa dipakai di browser

โœ… ENV dengan NEXT_PUBLIC_

NEXT_PUBLIC_SITE_URL=http://localhost:8080

โœ… Bisa dipakai di client & browser

๐Ÿ“Œ Gunakan NEXT_PUBLIC_ HANYA untuk data yang aman dipublikasikan.


Contoh Kasus Nyata (Port Salah)

Misalnya aplikasi kamu jalan di port 8080, tapi kodenya:

baseURL: process.env.BETTER_AUTH_URL || "http://localhost:3000"

Jika BETTER_AUTH_URL tidak diset:
๐Ÿ‘‰ request akan lari ke port 3000 (mati)
๐Ÿ‘‰ hasilnya: Failed to fetch

Solusi:

BETTER_AUTH_URL=http://localhost:8080

Perlu Build Ulang atau Tidak?

โœ… YA, kalau:

  • ubah .env.local

  • deploy production

  • pakai pm2 start npm -- start

โŒ Tidak perlu build ulang kalau:

  • cuma ubah UI

  • pakai npm run dev


Workflow ENV yang Benar (Production)

cp .env.example .env.local
nano .env.local
npm run build
pm2 restart next-portfolio

Kesalahan Umum

  • โŒ mengandalkan .env.example

  • โŒ lupa restart PM2

  • โŒ pakai localhost:3000 di server

  • โŒ lupa prefix NEXT_PUBLIC_


Penutup

Memahami ENV di Next.js akan menghemat:

  • waktu debugging

  • error aneh di production

  • deploy gagal tanpa pesan jelas

Kalau deploy kamu sering bermasalah, cek ENV dulu sebelum cek kode.