Salin pesan merah dari npm run build, bukan tebakan penyebabnya. cara mengatasi next build error selalu mulai dari baris ./app/...:12:5 karena Next.js gagal di file dan baris itu. Perbaiki sumbernya, lalu jalankan npm run build ulang di lokal sebelum deploy ke Vercel.
Penyebab Next Build Error Paling Sering
Build membaca semua route App Router sebagai production. Kode yang lolos npm run dev bisa gagal di sini karena prerender mengeksekusi Server Component sampai selesai.
- Compile: sintaks salah, import tidak ada, JSX tidak valid.
- TypeScript: tipe
params,searchParams, atau hasil fetch tidak cocok. - Dependency: versi React/Next bentrok atau paket hanya untuk Node dipakai di Edge.
- ENV: variabel server belum diisi saat build, atau
NEXT_PUBLIC_dipakai untuk secret. - Runtime saat prerender:
window,document,localStoragedipanggil dari Server Component.
Tandai error production-only bila log menyebut prerendering, useSearchParams, atau halaman statis tertentu.
Tabel Cepat Baca Pesan Error Build
Pakai tabel ini untuk triase. Jangan ubah config sebelum masalahnya masuk salah satu baris.
| Masalah | Penyebab | Solusi |
|---|---|---|
| Failed to Compile | Import atau sintaks salah | Perbaiki path dan kurung di baris log |
| Type error | Tipe props atau data salah | Perbaiki tipe, hindari any |
| Module Not Found | Nama file case-sensitive | Samakan nama import dan file |
| ENV missing | ENV belum diset di server build | Isi ENV lalu build ulang |
| window is not defined | Browser API di server | Pindah ke Client Component atau guard |
Langkah Memperbaiki Build Error Tanpa Skip Check
Jangan aktifkan ignoreBuildErrors untuk build production. Error yang disembunyikan berubah jadi halaman rusak atau data salah.
- Reproduksi dengan
npm run builddi lokal, bukan hanyanpm run dev. - Baca 10 baris pertama error, catat nama file dan nomor barisnya.
- Perbaiki sumbernya: tipe data, ENV, import, atau pemisahan Server dan Client Component.
- Validasi input ulang di server bila error berasal dari fetch atau Server Action.
- Jalankan
npm run buildlagi sampai bersih, baru push atau deploy.
// Client Component hanya untuk browser API
"use client";
import { useEffect, useState } from "react";
export default function ThemeButton() {
const [theme, setTheme] = useState("light");
useEffect(() => {
setTheme(localStorage.getItem("theme") ?? "light");
}, []);
return <button onClick={() => setTheme("dark")}>{theme}</button>;
}
// Baca ENV server di Server Component
const apiKey = process.env.PAYMENT_API_KEY;
if (!apiKey) {
throw new Error("PAYMENT_API_KEY belum diisi");
}
FAQ
Apakah boleh pakai ignoreBuildErrors saat build gagal?
Boleh sementara untuk debug lokal, tetapi matikan lagi untuk production karena menyembunyikan bug tipe dan runtime.
Kenapa build lolos lokal tapi gagal di Vercel?
ENV Vercel belum diisi atau Node version berbeda, samakan ENV dan versi runtime lalu build ulang.