Skip to main content

Command Palette

Search for a command to run...

Mengatasi pnpm install yang Gagal Berulang Karena Jaringan Tidak Stabil

Published
4 min read
A

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

  • ECONNRESET

  • ERR_SOCKET_TIMEOUT

  • stuck 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:

  • pnpm sangat agresif dalam parallel download

  • menggunakan 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

Google

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:

  • sharp

  • prisma

  • esbuild

  • node-gyp

  • better-sqlite3

Coba:

pnpm install --ignore-scripts

Lalu:

pnpm rebuild

10. Solusi Professional: Local Registry Cache

Untuk team atau project besar, gunakan:

Verdaccio

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.