Troubleshooting
Katalog error umum CLI dan web beserta solusinya, dari slug tidak ditemukan sampai prasyarat hilang.
Troubleshooting#
Catatan penting: Scaffdev saat ini masih dalam masa pengembangan dan baru mendukung 2 framework template yaitu Next.js dan Laravel. Dukungan framework lain akan terus ditambahkan seiring waktu.
Temukan pesan errormu di bawah ini dan ikuti solusinya berurutan. Setiap error punya pola yang sama: pesan error → penyebab → solusi langkah demi langkah. Kalau belum ketemu, salin pesan error lengkap (termasuk 5–10 baris sebelum dan sesudahnya) lalu tanyakan ke asisten AI di pojok kanan bawah.
Tips umum sebelum mulai: pastikan Node.js v18+,
git, dan koneksi internet (lihat Cara Install), lalu ulangi command yang gagal untuk memastikan error-nya konsisten, bukan gangguan sesaat.
Template dengan slug "x" tidak ditemukan#
Pesan error:
Template dengan slug "x" tidak ditemukan
Penyebab:
- Slug salah ketik (typo, kurang tanda hubung, atau salah casing).
- Template belum di-publish (masih draft) sehingga tidak ada di katalog API.
- Katalog lokal / cache slug kedaluwarsa (untuk instalasi global yang lama).
Solusi:
- Jalankan CLI tanpa flag untuk melihat daftar slug yang tersedia dan pilih dari daftar:
npx scaffdev@latest
- Kalau sudah tahu slug-nya, pakai flag lengkap dengan tanda
=(tanpa spasi):
npx scaffdev@latest --template=<slug>
- Contoh konkret dengan nama folder:
npx scaffdev@latest toko-saya --template=ecommerce-supabase-midtrans-nextjs
- Kalau slug dari web tapi tetap tidak ditemukan, pastikan kamu meng-copy slug persis (tanpa spasi di awal/akhir) dan template-nya berstatus published. Untuk instalasi global lama, update dulu via
npm update -g scaffdevlalu ulangi.
Tidak dapat menghubungi API Scaffdev#
Pesan error:
Tidak dapat menghubungi API Scaffdev
Penyebab:
- CLI tidak bisa mencapai API (default:
https://scaffdev.vercel.app) karena offline, firewall, atau URL API salah. - URL API belum disesuaikan untuk development lokal (kontributor yang menjalankan API sendiri di
localhost).
Solusi:
- Pastikan koneksi internet jalan dan coba lagi. Kalau memakai VPN / proxy kantor, test tanpa VPN dulu.
- Untuk development lokal (API jalan di komputermu sendiri), set environment variable sebelum menjalankan CLI:
SCAFF_API_BASE_URL=http://localhost:3000 npx scaffdev@latest --template=<slug>
- Untuk PowerShell, set variable-nya terlebih dahulu dalam sesi yang sama:
$env:SCAFF_API_BASE_URL="http://localhost:3000"
npx scaffdev@latest --template=<slug>
- Pengguna biasa (bukan kontributor) tidak perlu set variable ini. Cukup pastikan command memakai API default dan internet stabil.
Belum ada template aktif yang terdaftar#
Pesan error:
Belum ada template aktif yang terdaftar
Penyebab:
- API jalan tapi katalog kosong, belum ada template berstatus published. Umum di instalasi API lokal yang baru.
Solusi:
- Ini normal untuk instalasi baru, bukan bug di komputermu.
- Daftarkan template lewat panel admin, isi metadata (slug, repo URL, integrasi), lalu ubah status menjadi published.
- Jalankan ulang CLI, katalog seharusnya sudah terisi.
Prasyarat gagal: Node.js / Composer tidak ditemukan#
Penyebab:
- Runtime yang dibutuhkan template belum terinstall atau tidak ada di
PATHterminal yang dipakai.
Solusi:
- Template Next.js butuh Node.js v18+. Cek dan install:
node --version
Unduh di nodejs.org (pilih LTS). Setelah install, tutup dan buka ulang terminal. Pastikan keluar v18 atau lebih baru, karena versi 16 ke bawah ditolak CLI.
- Template Laravel butuh PHP 8.2+ dan Composer. Cek satu per satu:
php --version
composer --version
Unduh PHP dari situs resmi dan Composer dari getcomposer.org. Di Windows, pastikan kedua command dikenali di terminal yang sama dengan tempat kamu menjalankan CLI (masalah umum: install di satu terminal, eksekusi di terminal lain dengan PATH berbeda).
Folder sudah ada dan tidak kosong#
Pesan error:
Folder sudah ada dan tidak kosong
Penyebab:
- Folder tujuan sudah ada dan berisi file. CLI menolak menimpa diam-diam agar tidak menghapus kerjaanmu.
Solusi:
- Pilih folder kosong atau nama lain:
npx scaffdev@latest nama-folder-baru --template=<slug>
- Atau jawab "ya" saat ditanya overwrite, hanya bila kamu yakin isi folder boleh ditimpa (mis. folder percobaan kosong).
- Kalau folder terlihat kosong tapi tetap ditolak, tampilkan file tersembunyi (
.git,.DS_Storedihitung sebagai isi). Hapus folder sepenuhnya lalu generate ulang.
Error saat npm install / composer install#
Penyebab:
- Ini di luar kendali CLI. Biasanya jaringan (registry / packagist tidak terjangkau), versi runtime tidak cocok dengan dependency template, atau cache install rusak.
Solusi:
- Hapus folder hasil generate (atau
node_modules/vendorbila ingin coba ulang di folder yang sama). - Pastikan prasyarat Node.js / PHP di atas sudah lolos.
- Ulangi generate, lalu install manual untuk melihat pesan error aslinya (jangan hanya mengandalkan output CLI):
npm install
composer install
- Baca 10–20 baris pertama error asli:
ETIMEDOUT/ENOTFOUNDberarti jaringan;requires php ^8.2berarti versi PHP kurang;EBADENGINEberarti versi Node kurang. Perbaiki sesuai pesannya, bukan mengulang command yang sama berkali-kali. - Kalau jaringan kantor memakai proxy, konfigurasi
npm/composeruntuk proxy tersebut sebelum install.
git clone gagal#
Pesan error:
git clone gagal
Penyebab:
gitbelum terinstall, tidak ada diPATH, atau tidak ada akses internet ke github.com.
Solusi:
- Pastikan
gitterinstall dan dikenali:
git --version
- Pastikan kamu punya akses internet ke github.com (buka di browser sebagai test cepat).
- Semua repo template bersifat publik, tidak perlu token atau login GitHub. Kalau error menyebut autentikasi, kemungkinan URL remote salah ketik atau file hosts / proxy mengganggu. Coba clone URL yang sama manual untuk memastikan.
- Di jaringan terbatas (kampus / kantor), pastikan port 443 ke github.com tidak diblokir firewall.
Port dev server sudah dipakai#
Pesan error (contoh):
Port 3000 is already in use
Penyebab:
- Dev server lama masih jalan di port yang sama (terminal lama belum dimatikan).
Solusi:
- Matikan proses lama (Ctrl+C di terminal tempat server jalan).
- Atau jalankan di port lain:
npx next dev -p 3001
php artisan serve --port=8001
Env / API key tidak terbaca#
Gejala: halaman tampil tapi login / payment / ongkir error; log menyebut variable undefined atau missing.
Penyebab umum:
- Lupa menyalin
.env.examplemenjadi file aktif, atau lupa restart dev server setelah mengisi env. - Salah paste (spasi di awal/akhir), tertukar sandbox vs production, atau prefix
NEXT_PUBLIC_diubah.
Solusi:
- Pastikan file aktif ada (
.env.localuntuk Next.js,.envuntuk Laravel) dan sudah diisi mengikutiSETUP.md. - Restart dev server. Next.js dan Laravel membaca env saat proses dimulai.
- Bandingkan nama variable dengan
.env.examplehuruf per huruf. Detail lengkap ada di Environment & Setup.
Cara membaca pesan error (metode 2 menit)#
Sebelum scroll ke daftar error, pahami dulu anatomi pesan error agar solusinya
ketemu dalam 2 menit, bukan 2 jam:
- Baca 10–20 baris PERTAMA error, bukan yang terakhir. Baris pertama
biasanya berisi penyebab asli (Error: ...,ETIMEDOUT,requires php ^8.2);
baris-baris akhir biasanya hanya jejak tumpukan (stack trace) yang mengulang. - Pisahkan "apa" dari "di mana". Contoh
npm ERR! code ERESOLVE→ "apa"-nya
konflik dependency, "di mana"-nya nama package yang disebut di bawahnya. - Ulangi command sekali lagi. Error jaringan/sementara hilang di percobaan
kedua. Kalau hasilnya beda-beda tiap run, curigai koneksi, bukan kode. - Kecilkan masalah: error saat
npm install? Jalankan manual di folder project
agar pesan aslinya terlihat (CLI merangkum output dan bisa menyembunyikan detail).
Cek diagnostik satu menit#
Jalankan blok ini dan simpan hasilnya sebelum bertanya ke siapa pun:
node --version
npm --version
git --version
php --version
composer --version
Versi yang sehat: Node.js v18+, npm v9+, git sembarang versi modern,
PHP 8.2+, Composer v2+. Kalau salah satunya error command not found,
berhenti di sini dan bereskan instalasinya dulu, karena 80% error misterius
berasal dari prasyarat yang belum lolos.
Error saat install: konflik dependency (ERESOLVE)#
Pesan error (contoh):
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR! While resolving: ...
Penyebab:
- Template mengunci versi dependency yang tidak cocok dengan versi Node.js-mu
(mis. template butuh Node 18 tapi kamu pakai Node 22, atau sebaliknya). - Cache
node_modules/package-lock.jsonrusak dari percobaan sebelumnya.
Solusi:
- Pastikan Node.js-mu v18+ (lihat cek diagnostik di atas). Kalau memakai nvm/nvm-windows,
ganti versi lalu install ulang dari nol:
rm -rf node_modules package-lock.json
npm install
- Jangan paksa dengan
--force/--legacy-peer-depskecuali kamu paham
konsekuensinya, karena flag itu menyembunyikan konflik, bukan menyelesaikannya,
dan bisa meledak saatnpm run build. - Kalau error menyebut package spesifik, catat nama + versinya. Itu bahan
laporan bug ke pembuat template.
Error versi runtime tidak cocok (EBADENGINE / requires php)#
Pesan error (contoh):
npm WARN EBADENGINE unsupported engine
composer install: your php version does not satisfy that requirement
Penyebab:
- Versi Node.js / PHP di komputermu di luar rentang yang didukung template.
Solusi:
- Untuk Node.js: install versi LTS dari nodejs.org,
atau pakai version manager (nvm/nvm-windows/volts) agar bisa ganti versi
per project tanpa uninstall. - Untuk PHP: install PHP 8.2+ dan pastikan
php --versiondi terminal yang
SAMA dengan tempat menjalankan Composer (Windows sering punya dua PHP:
satu dari XAMPP, satu standalone. Pastikan yang 8.2+ yang dikenali). - Setelah ganti versi, hapus
node_modules/vendorlalu install ulang.
Error permission (EACCES /EPERM) saat install global#
Pesan error (contoh):
npm ERR! code EACCES
npm ERR! syscall mkdir
Penyebab:
npm install -gmencoba menulis ke folder sistem yang butuh hak admin.
Solusi:
- Jangan biasakan
sudo npm install -g(mengacaukan kepemilikan file).
Untuk pemakaian Scaffdev, pilih modenpx scaffdev@latestyang tidak butuh
install global sama sekali. - Kalau tetap butuh global, perbaiki prefix npm ke folder milik user-mu
(lihat dokumentasi npmnpm config set prefix) atau pakai Node version
manager yang mengelola prefix sendiri.
Login Supabase gagal / data tidak muncul (RLS)#
Gejala: register/login error, atau halaman kosong padahal tabel ada isinya;
log menyebut row-level security, permission denied, atau JWT.
Penyebab:
- Tabel Supabase belum punya policy yang mengizinkan operasi itu.
- Key yang dipakai salah (anon key vs service_role tertukar), atau env belum di-restart.
Solusi:
- Pastikan memakai anon key (bukan service_role) di env publik.
- Restart dev server setelah mengubah env.
- Buka dashboard Supabase → Authentication → Policies di tabel terkait:
untuk belajar, buat policy baca untuk semua (public read) dulu, tulis hanya
untuk user terautentikasi. Ketatkan sebelum production. - Test dengan akun baru (bukan akun yang dibuat sebelum policy diubah).
Detail alur setup ada di Daftar Integrasi bagian Supabase.
Popup Midtrans / Xendit / Duitku tidak muncul#
Gejala: tombol bayar diklik tapi tidak terjadi apa-apa, atau checkout error;
console browser menyebut key undefined atau ... is not defined.
Penyebab:
- Client key belum diisi / salah paste / tertukar sandbox vs production.
- Script popup payment belum dimuat sebelum dipanggil.
- Secret key malah dipasang dengan prefix
NEXT_PUBLIC_(bocor + tidak terbaca server).
Solusi:
- Cek env: client/public key berprefix
NEXT_PUBLIC_, secret/server key TANPA prefix. - Restart dev server, hard-refresh browser (Ctrl+Shift+R) agar env baru terbaca.
- Buka console browser (F12) dan baca error merah pertama, karena 90% jawabannya ada di sana.
- Pastikan memakai key sandbox selama development (Midtrans
SB-..., Xenditxnd_development_...).
Webhook / callback payment tidak masuk#
Gejala: pembayaran sandbox sukses, tapi status order di aplikasi tidak berubah.
Penyebab:
- URL callback di dashboard payment menunjuk
localhost, server payment tidak
bisa menjangkau komputermu, jadi notifikasi tidak pernah sampai. - Signature verifikasi gagal (format salah) sehingga aplikasi menolak notifikasi.
Solusi:
- Untuk development, expose localhost via tunnel (mis. ngrok), daftarkan URL
tunnel sementara di dashboard sandbox payment. - Pastikan handler callback memverifikasi signature sesuai dokumentasi resmi
(satu karakter meleset = ditolak). - Jangan update status order dari redirect frontend saja. Selalu konfirmasi
via callback server-to-server. - Cek log endpoint callback-mu: request masuk tapi ditolak, atau tidak masuk
sama sekali. Keduanya hal berbeda dengan solusi berbeda.
Error Laravel: APP_KEY, migrasi, dan Composer kehabisan memori#
Pesan error (contoh):
No application encryption key has been specified
Allowed memory size exhausted (composer)
Solusi:
APP_KEY: jalankanphp artisan key:generatesetelah menyalin.env.
Kalau.envdihapus/ditimpa, generate ulang.- Migrasi gagal: pastikan kredensial database di
.envbenar dan database-nya
sudah dibuat (Laravel tidak membuat database otomatis di semua driver).
Jalankanphp artisan migratedan baca error baris pertamanya. - Composer kehabisan memori: jalankan dengan batas dinaikkan sementara:
COMPOSER_MEMORY_LIMIT=-1 composer install
Build gagal (TypeScript / Tailwind / lint)#
Pesan error (contoh):
Type error: ...
Could not resolve ... / Unknown at rule
Penyebab:
- Error ketik di kode, import path salah, atau dependency belum terinstall
(npm installbelum dijalankan / gagal di tengah).
Solusi:
- Jalankan
npm installsampai tuntas dulu, barunpm run build. Sebagian
besar "build gagal" sebenarnya "install belum beres". - Baca error TypeScript pertama dari atas; perbaiki satu per satu (error
turunan di bawahnya sering hilang sendiri). - Untuk Tailwind: pastikan file CSS yang diimpor ada dan directive-nya benar;
jangan campur sintaks versi 3 dan 4. - Untuk Laravel:
composer installtuntas +php artisan key:generate+
pastikan ekstensi PHP yang dibutuhkan template terinstall.
Masalah khusus Windows#
Gejala umum: command dari panduan (yang ditulis untuk Mac/Linux) error di CMD/PowerShell.
Solusi per kasus:
cp: command not found(CMD tidak punyacp), gunakan padanannya:
copy .env.example .env.local # Next.js (CMD)
copy .env.example .env # Laravel (CMD)
- PowerShell menolak menjalankan script (
execution policy), jalankan
terminal sebagai user biasa dan set policy minimal untuk user-mu, atau
gunakan Git Bash/CMD untuk command tersebut. node/phpdikenali di satu terminal tapi tidak di terminal lain, masalahPATH: install ulang runtime dengan opsi "Add to PATH" dicentang, tutup
SEMUA terminal, buka ulang.- Path dengan spasi (
C:\Users\Nama Panjang\...) kadang bermasalah dengan
tools tertentu. Generate project di path tanpa spasi bila menemui error aneh.
Git SSL / clone lambat / gagal di jaringan kantor-kampus#
Gejala: git clone timeout, error SSL certificate, atau sangat lambat.
Penyebab:
- Firewall/proxy kampus-kantor memblokir atau menginspeksi koneksi ke github.com.
Solusi:
- Test cepat: buka github.com di browser. Kalau browser bisa tapi git tidak,
masalahnya di konfigurasi git/proxy, bukan internet mati. - Kalau memakai proxy, konfigurasi git dan npm untuk proxy tersebut.
- Jangan matikan verifikasi SSL (
http.sslVerify false) kecuali sementara
untuk diagnosis, karena itu membuka serangan man-in-the-middle. - Coba jaringan lain (tethering HP) untuk memastikan apakah masalahnya
spesifik jaringan tersebut.
AI menjawab "Terlalu banyak pertanyaan" (429)#
Gejala: asisten AI menolak dengan pesan rate limit padahal baru bertanya sedikit.
Penyebab:
- Batas 10 pertanyaan per 10 menit per IP sudah tercapai (dihitung bersama di semua server, bukan per server).
- Satu jaringan kantor/kampus = satu IP publik untuk semua orang di dalamnya.
Solusi:
- Tunggu hingga jendela 10 menit berganti, lalu coba lagi.
- Kurangi pengulangan: baca jawaban sampai habis sebelum bertanya lanjutan yang mirip.
- Kalau memakai VPN/proxy bersama, matikan sementara atau ganti jaringan.
Security audit menemukan HIGH/CRITICAL#
Gejala: CLI berhenti dengan temuan berisiko tinggi sebelum clone, atau bertanya "Tetap lanjutkan cloning?".
Penyebab:
- Bukan error: ini proteksi yang bekerja. Contoh pemicu:
postinstallyang mengunduh dan mengeksekusi file remote, atau PowerShell encoded command.
Solusi:
- Baca blok temuan baik-baik: nama file, perintah yang terdeteksi, dan alasannya.
- Kalau kamu kenal pembuat template dan yakin aman (mis. script install internal perusahaanmu), pilih lanjutkan secara eksplisit.
- Kalau ragu sedikit pun, pilih batal (default-nya memang batal untuk temuan HIGH/CRITICAL).
- Untuk melewati audit sepenuhnya: jawab No saat ditanya, lalu konfirmasi kedua. Lakukan ini hanya untuk repo milikmu sendiri.
Konflik file saat scaffdev add#
Gejala: CLI melaporkan TABRAKAN: "lib/..." sudah ada lalu berhenti.
Penyebab:
- File dari modul sudah ada di project-mu (mis. hasil generate sebelumnya atau edit manual dengan nama sama).
Solusi:
- Pilih Batal (default, aman): tidak ada file yang diubah. Ganti nama file lamamu dulu bila memang ingin versi modul.
- Pilih Lewati: hanya file yang belum ada yang dipasang.
- Pilih Timpa: file lama dibackup dulu ke
.scaff/trash/(ada timestamp-nya), baru ditimpa. Cek backup itu bila hasil timpa tidak cocok.
validate-module gagal#
Gejala: exit code bukan 0 disertai daftar [field] pesan.
Penyebab umum:
kodetidak cocok pola huruf kecil/dash, atauversionbukan semver (1.0.0).files[]kosong, atausrctidak ada di repo (cek ulang path relatif terhadap folder framework).removal.filestidak tepat mencakup semuadest(tidak boleh kurang, tidak boleh lebih).stepsFilemenunjuk file yang tidak ada.
Solusi:
- Perbaiki sesuai nama field di pesan error, jalankan ulang sampai keluar
valid. - Untuk repo remote, tambah
--ref=<branch>bila yang ingin divalidasi bukan branch default.
Cara meminta bantuan yang efektif#
Kalau semua solusi di atas belum menyelesaikan masalah, siapkan tiga hal ini sebelum bertanya ke AI atau tim:
- Command persis yang dijalankan (sensor API key bila ada di command).
- Pesan error lengkap (copy 10–15 baris, bukan paraphrase).
- Hasil cek prasyarat:
node --version,git --version, dan untuk Laravelphp --version+composer --version.
