Mengatasi pnpm install yang Gagal Berulang Karena Jaringan Tidak Stabil
I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.
Saat development modern menggunakan React, Next.js, Express, NestJS, atau monorepo besar, proses:
pnpm install
bisa menjadi sangat menyebalkan ketika jaringan internet tidak stabil.
Gejala yang umum terjadi:
install berhenti di tengah jalan
package download mengulang terus
timeout
ECONNRESETERR_SOCKET_TIMEOUTstuck pada resolving/fetching
download package besar sangat lama
install berjalan lalu rollback lagi
Masalah ini cukup sering terjadi di:
WiFi ISP yang routing internasionalnya buruk
hotspot mobile
jaringan dengan packet loss tinggi
koneksi yang sering reconnect
VPS dengan limit koneksi
Kenapa pnpm Terlihat Lebih Sensitif?
Sebenarnya bukan karena pnpm jelek.
Justru pnpm:
lebih cepat
lebih hemat storage
lebih efisien dibanding npm
Tetapi:
pnpmsangat agresif dalam parallel downloadmenggunakan symlink store
melakukan banyak request metadata
Pada jaringan buruk, hal ini membuat:
koneksi mudah timeout
retry terjadi terus menerus
install terlihat “looping”
Kesalahan yang Sering Dilakukan
Banyak developer mencoba:
pnpm install --child-concurrency=1
Tetapi download tetap banyak.
Karena:
| Parameter | Fungsi |
|---|---|
child-concurrency |
membatasi proses build/postinstall |
network-concurrency |
membatasi download package |
Jadi:
child-concurrency≠ download concurrency
Solusi yang Benar
1. Batasi Parallel Download
Gunakan:
pnpm install --network-concurrency=1
atau:
pnpm install --network-concurrency=2
Ini adalah solusi paling penting.
Karena:
semakin banyak koneksi paralel
semakin mudah jaringan buruk mengalami packet loss dan timeout
Untuk koneksi tidak stabil:
- concurrency kecil justru lebih cepat selesai
2. Perbesar Retry dan Timeout
Default timeout kadang terlalu pendek untuk jaringan buruk.
Gunakan:
pnpm install \
--network-concurrency=1 \
--fetch-retries=20 \
--fetch-timeout=600000
Penjelasan:
| Parameter | Fungsi |
|---|---|
fetch-retries |
jumlah retry download |
fetch-timeout |
batas timeout download |
network-concurrency |
jumlah koneksi download bersamaan |
3. Gunakan prefer-offline
pnpm install --prefer-offline
Artinya:
pnpm akan lebih mengutamakan cache lokal
mengurangi request internet
Sangat membantu jika:
- package pernah terdownload sebelumnya
4. Gunakan Mode Full Offline
Jika dependency sudah pernah terdownload:
pnpm install --offline
Keuntungan:
tidak ada download ulang
install sangat cepat
tidak tergantung internet
5. Gunakan pnpm fetch
Ini adalah fitur yang sering tidak diketahui developer.
Download dependency terlebih dahulu
Saat internet bagus:
pnpm fetch
Ini hanya:
download package ke store
tanpa install project
Nanti saat internet buruk:
pnpm install --offline
Strategi ini sangat efektif untuk:
monorepo besar
CI/CD
project enterprise
koneksi tidak stabil
6. Ganti Registry NPM
Kadang masalah bukan internet lokal, tetapi routing ke registry npm.
Coba gunakan mirror:
pnpm config set registry https://registry.npmmirror.com
Atau kembali ke official:
pnpm config set registry https://registry.npmjs.org
Tes koneksi:
pnpm ping
7. Gunakan DNS yang Lebih Stabil
Kadang DNS ISP bermasalah.
Gunakan:
Cloudflare
1.1.1.1
1.0.0.1
8.8.8.8
8.8.4.4
8. Masalah IPv6
Beberapa ISP memiliki routing IPv6 buruk.
Akibatnya:
request npm timeout
koneksi reset
download gagal acak
Coba paksa IPv4:
Linux / macOS
export NODE_OPTIONS="--dns-result-order=ipv4first"
Windows
setx NODE_OPTIONS "--dns-result-order=ipv4first"
9. Native Module Sering Jadi Penyebab
Kadang gagal bukan download package, tetapi build native module.
Contoh:
sharpprismaesbuildnode-gypbetter-sqlite3
Coba:
pnpm install --ignore-scripts
Lalu:
pnpm rebuild
10. Solusi Professional: Local Registry Cache
Untuk team atau project besar, gunakan:
Verdaccio adalah:
local npm registry
cache package internal
proxy npm
Keuntungan:
dependency hanya download sekali
install berikutnya lokal
sangat cepat
hemat bandwidth
stabil untuk kantor/tim
Konfigurasi yang Direkomendasikan
Untuk Jaringan Tidak Stabil
pnpm config set network-concurrency 1
pnpm config set fetch-retries 20
pnpm config set fetch-timeout 600000
Lalu install:
pnpm install --prefer-offline
Kesimpulan
Masalah pnpm install berulang bukan selalu karena:
package rusak
pnpm bermasalah
project error
Sering kali penyebab utamanya:
jaringan tidak stabil
terlalu banyak parallel connection
DNS/IPv6 bermasalah
registry timeout
Dengan mengurangi network-concurrency, memperbesar retry, dan memanfaatkan cache offline, proses install biasanya menjadi jauh lebih stabil bahkan pada koneksi internet yang buruk.



