Cara Betulkan Vercel Deploy Gagal: Panduan Untuk Tim Malaysia
Aplikasi anda gagal deploy di Vercel? Kami bincangkan isu-isu lazim yang telah kami selesaikan untuk syarikat di Malaysia, dari environment variable hinggalah ke edge runtime. Panduan praktikal untuk lancarkan aplikasi anda.
Vercel telah menjadi platform pilihan untuk deploy aplikasi web moden, terutamanya yang dibina dengan Next.js. Integrasi Git yang lancar dan rangkaian 'edge' global menawarkan kelajuan dan kemudahan yang hebat. Namun, apabila proses deploy gagal, ia boleh menghentikan kemajuan projek. Di JRV Systems, kami telah membantu banyak perniagaan di Malaysia menyelesaikan masalah sebegini.
Artikel ini menghuraikan punca-punca kegagalan deploy di Vercel yang paling kerap kami temui dan langkah-langkah praktikal untuk menyelesaikannya, berdasarkan pengalaman kami bekerja dengan pasukan pembangun tempatan.
Punca Lazim Vercel Deploy Gagal dan Cara Penyelesaiannya
Apabila log 'build' di Vercel menunjukkan ralat, mesej yang dipaparkan kadangkala sukar difahami. Punca utamanya selalunya bukan isu kod yang kompleks, tetapi kesilapan kecil dalam konfigurasi. Berikut adalah masalah-masalah yang sering berulang dan cara penyelesaiannya.
1. Isu Konfigurasi Environment Variable
Ini adalah punca kegagalan deploy yang paling kerap berlaku. Aplikasi anda berfungsi dengan sempurna di komputer anda (local) tetapi gagal semasa proses 'build' di Vercel.
- Masalah: Seorang pembangun menambah kunci API atau nilai konfigurasi baru dalam fail
.envtempatan mereka tetapi terlupa untuk mengemas kininya di dashboard projek Vercel. Skrip 'build' kemudiannya gagal kerana 'variable' yang diperlukan tidak wujud (undefined). - Penyelesaian: Jadikan proses mengemas kini 'environment variable' di Vercel sebahagian daripada aliran kerja anda. Dalam projek Vercel anda, pergi ke Settings > Environment Variables. Pastikan setiap 'variable' yang diperlukan oleh aplikasi anda telah ditetapkan untuk persekitaran yang betul (Production, Preview, Development). Untuk kunci API perkhidmatan tempatan seperti Billplz atau ToyyibPay, semak semula sama ada ia disalin dengan betul dan gunakan awalan
NEXT_PUBLIC_hanya jika ia selamat untuk didedahkan pada pelayar web (browser).
Untuk memastikan semuanya selaras, gunakan arahan Vercel CLI vercel env pull .env.local untuk mencipta fail environment tempatan yang mencerminkan apa yang telah dikonfigurasikan untuk persekitaran Development di Vercel.
2. Ralat Konfigurasi Git dan Pasukan (Team)
Apabila bekerja dalam satu pasukan, kegagalan deploy boleh berpunca daripada konfigurasi Git yang tidak konsisten antara mesin pembangun yang berbeza.
- Masalah: Proses deploy ditolak dengan mesej ralat yang tidak jelas berkaitan kebenaran atau 'authorship'. Ini sering berlaku apabila e-mel 'commit' Git seorang pembangun (
user.email) tidak sepadan dengan alamat e-mel yang dikaitkan dengan akaun pasukan Vercel mereka. Vercel menguatkuasakan ini atas sebab keselamatan. - Masalah Lain (Monorepo): Proses 'build' gagal kerana tidak dapat mencari
package.json. Ini biasa berlaku dalam setup monorepo (menggunakan Turborepo atau yang serupa) di mana kod aplikasi tidak berada di direktori akar repositori. Proses 'build' Vercel sedang mencari di tempat yang salah. - Penyelesaian: Selaraskan konfigurasi Git. Pastikan semua ahli pasukan menetapkan e-mel kerja mereka menggunakan
git config --global user.email "emel-kerja@syarikat.com". Untuk monorepo, pergi ke Settings > Git dan tetapkan Root Directory untuk menunjuk ke folder aplikasi yang betul (contoh:apps/web).
3. Isu Pengesanan Framework dan Build Command
Pengesanan framework automatik Vercel sangat baik tetapi tidak sempurna. Ia mungkin tersilap meneka 'build command' atau direktori output untuk setup yang diubah suai.
- Masalah: 'Build' gagal dengan ralat seperti
command not found: buildatau selepas 'build' selesai, Vercel melaporkan ia tidak dapat mencari output. Ini boleh berlaku jika projek anda menggunakanpnpmtetapi Vercel secara lalai menggunakannpm run build. - Penyelesaian: Jangan bergantung pada pengesanan automatik jika setup anda tidak standard. Pergi ke Settings > General dan cari bahagian Build & Development Settings. Ganti (override) Build Command secara manual (contoh:
pnpm install && pnpm build) dan pastikan Output Directory adalah betul (contoh:.nextuntuk Next.js,distuntuk Astro).
4. Had Masa Serverless dan Edge Function
API route anda berfungsi di local tetapi 'timeout' di production. Ini adalah isu yang kerap dihadapi oleh pasukan di Malaysia yang berintegrasi dengan pangkalan data tempatan atau API kerajaan lama yang mungkin lambat memberi respons.
- Masalah: Sebuah Serverless Function melebihi tempoh pelaksanaan maksimumnya. Pada pelan Hobby Vercel, had ini adalah 10 saat. 'Query' pangkalan data yang perlahan atau rantaian panggilan API luaran boleh dengan mudah melepasi had ini.
- Penyelesaian: Pertama, optimumkan kod anda. Analisa 'function' anda untuk melihat di mana puncanya. Bolehkah respons API itu di-'cache'? Adakah 'query' pangkalan data anda mempunyai 'index' yang betul? Jika pengoptimuman tidak mencukupi, anda boleh meningkatkan had masa pada pelan Pro dengan menambah fail
vercel.jsonke projek anda dan mengkonfigurasimaxDurationuntuk 'function' tersebut, sehingga 900 saat.
5. Perangkap Edge Runtime
Edge Runtime menawarkan prestasi luar biasa dengan menjalankan kod lebih dekat dengan pengguna anda, tetapi ia adalah persekitaran yang berbeza daripada Node.js. Ini sering menyebabkan masalah kepada banyak pasukan.
- Masalah: Sebuah API route diubah suai untuk berjalan di Edge (
export const runtime = 'edge'), dan ia terus gagal semasa proses 'build'. Log ralat menyebut API Node.js yang tidak disokong sepertifsataupath. - Penyelesaian: Fahami batasannya. Edge Runtime tidak menyokong API asli Node.js. Anda mesti menggunakan standard Web seperti
fetch. Sebelum menggunakan pakej NPM dalam Edge Function, semak dokumentasinya untuk keserasian dengan "Edge," "Cloudflare Workers," atau "Deno." Banyak 'driver' pangkalan data atau pakej utiliti yang bergantung pada komponen dalaman Node.js tidak akan berfungsi.
6. Isu Caching dan Data Lapuk dengan ISR
Incremental Static Regeneration (ISR) adalah ciri hebat untuk mengimbangi prestasi statik dengan data dinamik. Tetapi jika salah dikonfigurasi, ia boleh menyebabkan masalah besar.
- Masalah: Halaman ISR "tersangkut" memaparkan ralat atau kandungan lama. Ini boleh berlaku jika API yang menyokong fungsi
getStaticPropsanda gagal sekali. Vercel mungkin akan 'cache' halaman ralat yang terhasil dan menyajikannya kepada semua pengguna berikutnya sehinggalah halaman itu di-deploy semula secara manual. - Penyelesaian: Bina fungsi pengambilan data yang lebih kukuh. Di dalam
getStaticProps, letakkan panggilan API anda dalam bloktry...catch. Jika berlaku ralat, daripada membiarkannya menghentikan 'build', anda boleh memulangkannotFound: trueuntuk memaparkan halaman 404, atau memulangkan halaman dengan 'props' yang menunjukkan status ralat. Ini menghalang isu sementara di 'backend' daripada merosakkan 'cache' laman web anda.
Dengan menjangkakan kegagalan-kegagalan lazim ini, pasukan anda boleh membina proses deploy yang lebih mantap. Walaupun Vercel mempermudahkan banyak proses, pemahaman yang kukuh tentang konfigurasinya adalah kunci untuk mengelakkan 'downtime'. Jika pasukan anda menghadapi masalah deploy yang berterusan, JRV Systems mempunyai pengalaman praktikal untuk mendiagnosis dan menyelesaikannya dengan cekap.