Tidak dapat terhubung ke DynamoDB Lokal (ECONNREFUSED) — "Could not connect to DynamoDB Local"
TL;DR — Tidak ada yang mendengarkan saat klien Anda melakukan panggilan. Konfirmasikan DynamoDB Lokal benar-benar berjalan pada port yang Anda harapkan, dan endpoint klien Anda mengarah ke http://localhost:8000 — bukan AWS asli.
Apa artinya
Error: connect ECONNREFUSED 127.0.0.1:8000Mengapa itu terjadi
- DynamoDB Lokal tidak berjalan — tidak pernah dimulai, mogok, atau dimatikan (lihat kesalahan proses awal).
- Port salah — Lokal ada di
8000tetapi klien memanggil8080(atau kontainer memetakan port host yang berbeda). - Tidak ada set
endpoint— tanpanya, SDK akan berkomunikasi dengan real AWS, bukan localhost (yang kemudian muncul sebagai kesalahan auth/region, atau ditolak jika Anda mengganti host). - Jaringan Docker — dari container lain,
localhostadalah container tersebut, bukan hostnya. Gunakan nama layanan/gateway host. - kekhasan resolusi
localhostvs127.0.0.1(IPv6::1).
Pengaturan umum
| Pengaturan | Titik akhir | Mengerti |
|---|---|---|
| bawaan buruh pelabuhan | http://localhost:8000 | Penampung harus mempublikasikan -p 8000:8000 |
| Pelabuhan khusus | http://localhost:8001 | Cocokkan -port 8001 pada toples dan klien |
| Layanan penulisan | http://dynamodb:8000 | Dari wadah lain — bukan localhost |
| AWS asli karena kesalahan | https://dynamodb.<region>.amazonaws.com | Jatuhkan endpoint saat yang Anda maksud adalah cloud |
Di Windows, WSL dan host terkadang tidak sepakat mengenai proses mana yang dimiliki
localhost:8000 — jika curl berfungsi di WSL tetapi Node di host dapat melakukannya
ECONNREFUSED, arahkan klien host ke 127.0.0.1 secara eksplisit atau jalankan Lokal
tempat klien berjalan.
Uji Koneksi DynoTable pada profil Lokal adalah pemeriksaan tercepat sesuatu menjawab pada titik akhir yang Anda konfigurasikan — gagal dengan hal yang sama menolak soket ketika Lokal sedang down.
Bagaimana cara memperbaikinya
- Konfirmasi bahwa ia mendengarkan:
curl http://localhost:8000 # DynamoDB Local returns a small response lsof -i :8000 # something should own the port - Setel titik akhir secara eksplisit pada klien:
import {DynamoDBClient} from '@aws-sdk/client-dynamodb'; const client = new DynamoDBClient({ region: 'local', endpoint: 'http://localhost:8000', credentials: {accessKeyId: 'local', secretAccessKey: 'local'} }); - Cocokkan port dengan emulator yang sebenarnya terikat (dan pemetaan Docker
-p host:container). - Lintas kontainer? Gunakan nama container/service (misalnya
http://dynamodb-local:8000) atauhost.docker.internal, bukanlocalhost(host.docker.internalterselesaikan secara otomatis di Docker Desktop; di Linux Docker Engine tambahkan--add-host host.docker.internal:host-gateway).
Workbench DynoTable
Instal DynoTable, lalu Pengaturan → Profil → Tambahkan Profil dengan
titik akhir http://localhost:8000. Tekan ⌘P untuk beralih ke profil Lokal
setelah curl http://localhost:8000 berhasil. Titik kredensial harus tetap hijau
saat Lokal aktif; jika berubah menjadi merah karena kesalahan koneksi, port atau titik akhir masuk
profilnya tidak cocok dengan tempat emulator mendengarkan. Gunakan
Konverter DynamoDB JSON untuk memuat perlengkapan setelahnya
Lokal dapat dijangkau.
Jika curl http://localhost:8000 gagal, emulator tidak berjalan — mulai Docker
atau toplesnya terlebih dahulu (Tidak dapat memulai proses Lokal DynamoDB).
Ketika port salah tetapi ada sesuatu yang mendengarkan, Anda mungkin melihat kesalahan HTTP umum
bukannya ECONNREFUSED; cocokkan titik akhir profil dengan lsof -i :8000 apa pun
laporan. Panduan: Hubungkan ke DynamoDB Lokal & LocalStack.
Kesalahan terkait
- Tidak dapat memulai proses Lokal DynamoDB
- Wilayah tidak ada di konfigurasi
- Pelajari: Menjalankan DynamoDB Lokal · Menghubungkan ke DynamoDB Lokal / LocalStack
Sumber
- Menyebarkan DynamoDB secara lokal di komputer Anda — Panduan Pengembang AWS DynamoDB (port default 8000, perintah peluncuran, contoh Docker run/compose)
- Catatan penggunaan lokal DynamoDB — Panduan Pengembang AWS DynamoDB (titik akhir lokal
http://localhost:8000; SDK memerlukan kunci akses + nilai wilayah) - amazon/dynamodb-local — Docker Hub (gambar resmi,
docker run -p 8000:8000 amazon/dynamodb-local) docker run --add-host— Referensi Docker CLI (host.docker.internal/host-gatewayuntuk koneksi container-ke-host)