Cara Mengatasi npm run build Error Out of Memory di cPanel Shared Hosting
Saat deploy project Laravel, Next.js, atau frontend berbasis Vite ke cPanel shared hosting, salah satu error yang cukup sering muncul adalah npm run build gagal karena memory tidak cukup.
Yang membuat bingung, biasanya build ini berjalan normal di laptop lokal. npm install juga berhasil di server. Tapi begitu masuk ke proses npm run build, deploy berhenti dengan error seperti WebAssembly.instantiate(): Out of memory atau ERR_WORKER_INIT_FAILED.
Dari pengalaman troubleshooting di shared hosting, masalah seperti ini sering kali bukan karena syntax JavaScript, bukan juga karena file project rusak. Penyebab utamanya biasanya resource hosting tidak cukup untuk menjalankan proses build frontend modern.
Artikel ini membahas cara mengecek penyebabnya, solusi cepat yang paling aman, dan pendekatan deploy yang lebih realistis untuk cPanel shared hosting.
Contoh Error npm run build Out of Memory
Contoh error yang sering muncul saat menjalankan build Vite, Tailwind, atau frontend Laravel:
npm run build
> build
> vite build
node:internal/process/promises:394
triggerUncaughtException(err, true /* fromPromise */);
^
[RangeError: WebAssembly.instantiate(): Out of memory: Cannot allocate Wasm memory for new instance]
Node.js v24.16.0
Build completed with exit code 1Contoh error lain yang masih satu jenis masalah:
Error: EAGAIN
code: 'ERR_WORKER_INIT_FAILED'Gejala yang biasanya terlihat:
npm run buildberhasil di local, tetapi gagal di cPanel.npm installberhasil, tetapi build gagal.- Deploy berhenti saat menjalankan Vite, Tailwind, atau Next.js build.
- CPU atau memory di cPanel naik tinggi saat build.
- Error muncul setelah dependency frontend bertambah.
- Error muncul walaupun tidak ada perubahan besar pada kode aplikasi.
Kalau gejalanya seperti ini, besar kemungkinan masalahnya ada di limit resource shared hosting.
Penyebab npm run build Out of Memory di cPanel
Build frontend modern membutuhkan resource yang tidak kecil. Vite, Tailwind CSS, Next.js, dan beberapa package modern bisa memakai memory cukup besar saat proses compile, minify, generate asset, atau membuat bundle production.
Di cPanel shared hosting, resource biasanya dibatasi oleh CloudLinux atau sistem limit dari provider hosting. Batasannya bisa berupa:
- RAM per akun hosting.
- CPU usage.
- Jumlah process.
- I/O usage.
- Entry process.
- Limit fork worker Node.js.
- Limit proses WebAssembly.
Karena itu, walaupun project kecil terlihat ringan saat dibuka di browser, proses build-nya tetap bisa berat di server.
Penyebab WebAssembly.instantiate(): Out of Memory
Error ini biasanya muncul ketika salah satu dependency build menggunakan WebAssembly dan Node.js tidak bisa mengalokasikan memory baru.
Contohnya bisa terjadi saat build menggunakan tool modern yang melakukan proses transform, minify, compile CSS, atau bundling asset.
Pesan error seperti ini:
[RangeError: WebAssembly.instantiate(): Out of memory: Cannot allocate Wasm memory for new instance]Artinya Node.js mencoba membuat instance WebAssembly, tetapi memory yang tersedia di server tidak cukup.
Di local, error ini belum tentu muncul karena laptop biasanya punya RAM lebih besar dibanding limit per akun di shared hosting.
Penyebab ERR_WORKER_INIT_FAILED atau EAGAIN
Error seperti ini:
Error: EAGAIN
code: 'ERR_WORKER_INIT_FAILED'biasanya berhubungan dengan kegagalan Node.js membuat worker process baru.
Di shared hosting, proses build kadang membutuhkan beberapa worker untuk mempercepat compile. Tapi jika akun hosting dibatasi jumlah process-nya, worker tidak bisa dibuat dan build gagal.
Secara sederhana, server menolak membuat proses tambahan karena resource akun sudah mencapai batas.
Kenapa Build Frontend Berat di Shared Hosting?
Shared hosting dibuat untuk menjalankan website, bukan untuk melakukan proses build berat.
Untuk website PHP biasa, WordPress, atau Laravel yang sudah siap jalan, shared hosting masih masuk akal. Tapi untuk menjalankan proses seperti ini:
npm install
npm run build
next build
vite buildserver perlu menjalankan Node.js, membaca banyak file di node_modules, melakukan bundling, minify, hashing asset, dan kadang generate output production.
Masalahnya, proses tersebut biasanya lebih cocok dijalankan di:
- laptop lokal,
- CI/CD seperti GitHub Actions,
- VPS,
- dedicated build server.
Bukan langsung di cPanel shared hosting yang resource-nya terbatas.
Solusi Cepat: Build di Local, Upload Hasil Build ke cPanel
Solusi paling aman untuk shared hosting adalah jangan menjalankan npm run build di cPanel.
Jalankan build di local:
npm install
npm run buildLalu pastikan hasil build sudah muncul.
Untuk Laravel Vite, biasanya hasil build ada di:
public/buildCek dengan command:
ls -lah public/buildJika folder public/build sudah ada dan berisi file asset seperti CSS, JS, dan manifest, maka hasil build bisa ikut di-upload atau di-commit ke repository.
Dengan cara ini, cPanel hanya menjalankan PHP/Laravel saja. Proses build yang berat dilakukan di local.
Cek .gitignore Agar public/build Tidak Ter-ignore
Pada project Laravel Vite, biasanya .gitignore berisi:
/node_modules
/public/hotItu normal.
Tapi jika ingin commit hasil build, pastikan tidak ada baris seperti ini:
/public/buildKalau ada, folder hasil build tidak akan masuk ke Git.
Contoh .gitignore yang masih aman:
/node_modules
/public/hotSetelah build local, tambahkan hasil build ke Git:
git add public/build
git commit -m "Build frontend assets"
git push origin mainDengan begitu, saat deploy ke cPanel, file asset production sudah tersedia tanpa perlu menjalankan npm run build di server.
Contoh .cpanel.yml Jika Build Dilakukan di Local
Jika hasil build sudah ikut di-commit, file .cpanel.yml tidak perlu menjalankan npm install atau npm run build.
Contoh konfigurasi Laravel:
---
deployment:
tasks:
- export DEPLOYPATH=/home/${USER}/nama-project
- composer install --no-dev --optimize-autoloader -d $DEPLOYPATH
- /opt/alt/php84/usr/bin/php $DEPLOYPATH/artisan optimize:clear
- /opt/alt/php84/usr/bin/php $DEPLOYPATH/artisan migrate --force
- /opt/alt/php84/usr/bin/php $DEPLOYPATH/artisan optimize
- /opt/alt/php84/usr/bin/php $DEPLOYPATH/artisan queue:restartCatatan penting: sebelum menjalankan migrate --force di production, pastikan database sudah di-backup dan migration sudah dites di local atau staging.
Jika belum yakin dengan migration, lebih aman jalankan migration secara manual terlebih dahulu.
Solusi Lengkap Langkah demi Langkah
1. Pastikan Build Berhasil di Local
Langkah pertama, jangan langsung menyalahkan cPanel. Cek dulu apakah build memang berhasil di local.
Jalankan:
npm install
npm run buildJika di local gagal, berarti masalahnya ada di kode, dependency, konfigurasi Vite, Tailwind, atau Next.js.
Jika di local berhasil, tetapi di cPanel gagal, maka masalahnya hampir pasti ada di resource server.
2. Cek Hasil Build
Untuk Laravel Vite, cek folder berikut:
ls -lah public/buildBiasanya akan ada file seperti:
manifest.json
assets/Jika manifest.json tidak ada, Laravel bisa gagal membaca asset production.
Error yang mungkin muncul di Laravel:
Vite manifest not foundArtinya hasil build belum tersedia di server.
3. Commit Hasil Build ke Repository
Jika deploy menggunakan Git cPanel, commit hasil build:
git add public/build
git commit -m "Add production build assets"
git push origin mainPastikan folder public/build benar-benar masuk ke commit:
git statusAtau cek file yang sudah masuk:
git ls-files public/buildKalau tidak muncul, cek lagi .gitignore.
4. Hapus npm run build dari .cpanel.yml
Jika sebelumnya .cpanel.yml berisi command seperti ini:
- npm install --prefix $DEPLOYPATH
- npm run build --prefix $DEPLOYPATHhapus bagian tersebut jika build sudah dilakukan di local.
Tujuannya agar deploy di cPanel tidak lagi menghabiskan memory untuk proses build.
5. Deploy Ulang ke cPanel
Setelah commit dan push, jalankan deploy seperti biasa.
Untuk Laravel, pastikan command penting masih ada:
- composer install --no-dev --optimize-autoloader -d $DEPLOYPATH
- /opt/alt/php84/usr/bin/php $DEPLOYPATH/artisan optimize:clear
- /opt/alt/php84/usr/bin/php $DEPLOYPATH/artisan optimizeJika memakai queue:
- /opt/alt/php84/usr/bin/php $DEPLOYPATH/artisan queue:restartJika memakai migration otomatis:
- /opt/alt/php84/usr/bin/php $DEPLOYPATH/artisan migrate --forceSekali lagi, migration production harus hati-hati. Backup database dulu.
6. Hapus node_modules dari Server Jika Tidak Diperlukan
Jika sebelumnya pernah menjalankan npm install di server, folder node_modules bisa sangat besar.
Jika project tidak membutuhkan Node.js runtime di production, folder ini bisa dihapus:
rm -rf node_modulesJalankan dari root project dengan hati-hati.
Contoh:
cd /home/username/nama-project
rm -rf node_modulesJangan hapus folder lain secara sembarangan, terutama jika belum yakin sedang berada di direktori project yang benar.
7. Gunakan Node.js LTS Jika Tetap Harus Build di Server
Jika karena alasan tertentu tetap harus menjalankan build di cPanel, coba gunakan Node.js versi LTS.
Versi Node.js yang terlalu baru kadang belum cocok dengan beberapa dependency atau environment shared hosting.
Misalnya, jika menggunakan Node.js v24.x dan sering error, coba gunakan versi LTS yang lebih umum dipakai untuk production.
Setelah ganti versi Node.js, jalankan ulang:
node -v
npm -v
npm install
npm run buildNamun solusi ini tidak selalu berhasil jika penyebab utamanya memang memory hosting terlalu kecil.
8. Kurangi Dependency Frontend yang Berat
Jika build tetap ingin dilakukan di server, coba evaluasi dependency frontend.
Cek package.json:
cat package.jsonBeberapa hal yang bisa diperiksa:
- Apakah ada package UI besar yang tidak dipakai?
- Apakah ada library chart, editor, map, atau animation berat?
- Apakah dependency development ikut dipakai di production?
- Apakah ada plugin Vite/Tailwind yang membuat build makin berat?
Setelah menghapus dependency yang tidak perlu:
npm uninstall nama-package
npm install
npm run buildTapi untuk shared hosting, mengurangi dependency hanya membantu sebagian. Jika limit server terlalu kecil, build tetap bisa gagal.
9. Gunakan GitHub Actions untuk Build Otomatis
Jika tidak ingin build manual di local, gunakan GitHub Actions.
Alurnya:
- Push kode ke GitHub.
- GitHub Actions menjalankan
npm installdannpm run build. - Hasil build seperti
public/builddikirim ke server. - cPanel hanya menerima file final.
Dengan cara ini, proses berat terjadi di GitHub Actions, bukan di shared hosting.
Pendekatan ini lebih rapi untuk project yang sering deploy.
10. Pertimbangkan VPS Jika Tetap Butuh Build di Server
Jika project membutuhkan proses seperti:
npm run build
next build
npm run start
queue worker
scheduler
websocket
SSRmaka shared hosting mungkin bukan tempat yang ideal.
Untuk Laravel biasa dengan asset yang sudah di-build, cPanel masih bisa digunakan. Tapi untuk Next.js SSR, build besar, atau aplikasi Node.js yang butuh runtime aktif, VPS jauh lebih fleksibel.
Di VPS, kita bisa mengatur:
- memory,
- swap,
- Node.js version,
- process manager,
- queue worker,
- cron,
- Nginx,
- deployment pipeline.
Perbedaan Build di Local dan Build di Server
Build di local berarti proses compile dilakukan di komputer sendiri. Setelah selesai, hasilnya dikirim ke server.
Kelebihannya:
- Tidak membebani cPanel.
- Lebih cepat ditest.
- Error lebih mudah dilihat.
- Cocok untuk shared hosting.
Build di server berarti cPanel menjalankan npm run build setiap deploy.
Kekurangannya:
- Boros memory.
- Sering gagal di shared hosting.
- Deploy lebih lambat.
- Bergantung pada limit hosting.
- Bisa membuat CPU usage naik.
Untuk shared hosting, build di local atau CI/CD biasanya lebih aman.
Kapan Masih Aman Menjalankan npm di cPanel?
Menjalankan npm di cPanel masih masuk akal jika hanya untuk:
- project kecil,
- dependency sedikit,
- build ringan,
- hosting punya resource cukup,
- proses build jarang dilakukan,
- provider memang mendukung Node.js dengan limit memadai.
Namun jika setiap deploy sering gagal, CPU naik, atau muncul error out of memory, jangan dipaksa.
Lebih baik pindahkan proses build ke local atau GitHub Actions.
Kapan Sebaiknya Pindah ke VPS?
Pertimbangkan VPS jika mengalami kondisi berikut:
- Build selalu gagal di cPanel.
- Aplikasi butuh Node.js runtime.
- Menggunakan Next.js SSR.
- Membutuhkan queue worker aktif terus.
- Membutuhkan scheduler yang stabil.
- Traffic mulai besar.
- Sering deploy dan butuh pipeline lebih fleksibel.
- Shared hosting sering terkena limit CPU/RAM.
VPS memang butuh setup lebih banyak, tapi untuk aplikasi modern, kontrolnya jauh lebih baik dibanding shared hosting.
Cara Memastikan Masalah Sudah Selesai
- [ ]
npm run buildberhasil dijalankan di local. - [ ] Folder
public/buildsudah ada setelah build. - [ ] File
manifest.jsontersedia di dalampublic/build. - [ ] Folder
public/buildtidak ter-ignore oleh Git. - [ ] Hasil build sudah di-commit ke repository.
- [ ]
.cpanel.ymltidak lagi menjalankannpm run buildjika resource hosting terbatas. - [ ] Deploy cPanel berhasil tanpa error out of memory.
- [ ] Website tidak menampilkan error
Vite manifest not found. - [ ] Asset CSS dan JavaScript tampil normal di browser.
- [ ] Laravel cache sudah dibersihkan dan dibuat ulang.
Command verifikasi:
npm run build
ls -lah public/build
php artisan optimize:clear
php artisan optimizeJika ingin cek file build di Git:
git ls-files public/buildKesalahan yang Perlu Dihindari
- Memaksa menjalankan
npm run builddi shared hosting yang resource-nya kecil. - Menganggap error out of memory pasti karena bug kode.
- Menghapus
public/builddari repository padahal server tidak menjalankan build. - Menambahkan
/public/buildke.gitignoretanpa sadar. - Menjalankan
migrate --forcedi production tanpa backup database. - Menggunakan Node.js terlalu baru tanpa mengecek kompatibilitas dependency.
- Membiarkan
node_modulesbesar di server padahal tidak diperlukan. - Menjalankan
npm installdannpm run builddi setiap deploy walaupun hasil build bisa dikirim dari local. - Menggunakan shared hosting untuk aplikasi yang sebenarnya butuh VPS.
FAQ
Apakah error npm run build out of memory berarti kode saya salah?
Belum tentu. Jika build berhasil di local tetapi gagal di cPanel, kemungkinan besar masalahnya ada di limit resource hosting, bukan syntax kode.
Tapi jika build juga gagal di local, baru perlu cek kode, dependency, dan konfigurasi build.
Kenapa npm install berhasil tetapi npm run build gagal?
Karena npm install hanya mengunduh dan menyiapkan dependency, sedangkan npm run build melakukan proses compile, bundling, minify, dan generate asset production.
Proses build biasanya jauh lebih berat daripada install.
Apakah aman commit public/build ke Git?
Untuk Laravel Vite di shared hosting, ini cukup umum dilakukan jika server tidak menjalankan build.
Yang penting, jangan commit node_modules. Commit hanya hasil build seperti public/build.
Apakah node_modules perlu ada di server?
Jika aplikasi hanya Laravel biasa dan asset frontend sudah di-build, node_modules biasanya tidak diperlukan di production.
Namun jika aplikasi memang menjalankan Node.js runtime, SSR, atau proses lain berbasis Node.js, maka kebutuhannya berbeda.
Bagaimana jika muncul Vite manifest not found?
Error ini biasanya berarti Laravel tidak menemukan file hasil build.
Cek apakah file ini ada:
public/build/manifest.jsonJika tidak ada, jalankan build di local:
npm run buildLalu upload atau commit folder public/build.
Apakah mengganti versi Node.js bisa menyelesaikan error?
Bisa membantu jika error disebabkan kompatibilitas Node.js dan dependency.
Tapi jika penyebabnya murni memory hosting tidak cukup, mengganti versi Node.js belum tentu menyelesaikan masalah.
Lebih baik build di local atau GitHub Actions?
Untuk deploy sesekali, build di local sudah cukup.
Untuk project yang sering deploy, GitHub Actions lebih rapi karena proses build otomatis dan tidak membebani cPanel.
Apakah shared hosting cocok untuk Laravel dengan Vite?
Masih cocok, selama hasil build Vite sudah disiapkan sebelum deploy.
Yang kurang cocok adalah memaksa shared hosting menjalankan proses build berat setiap kali deploy.
Kesimpulan
Error npm run build out of memory di cPanel shared hosting biasanya terjadi karena limit resource server, bukan karena kode aplikasi rusak.
Solusi paling aman adalah menjalankan build di local atau GitHub Actions, lalu upload atau commit hasil build seperti public/build. Dengan begitu, cPanel tidak perlu menjalankan proses build Node.js yang berat.
Jika project semakin kompleks, dependency makin besar, atau aplikasi membutuhkan Node.js runtime, shared hosting mungkin sudah tidak cukup. Pada kondisi tersebut, VPS adalah pilihan yang lebih realistis.
Rekomendasi Artikel Terkait
- Cara Deploy Laravel ke cPanel Shared Hosting dengan Git
- Urutan Command .cpanel.yml yang Aman untuk Deploy Laravel
- Cara Menjalankan php artisan migrate –force Otomatis Saat Deploy Laravel di cPanel

