TypeError: fetch failed (cause: ConnectTimeoutError / ECONNREFUSED / UND_ERR)
Node’s built-in fetch (undici) couldn’t complete the request; the real reason is in error.cause.
Seen on:
Node.js
Meaning
Node 18+ fetch wraps network errors as "fetch failed". Log err.cause: UND_ERR_CONNECT_TIMEOUT (unreachable/IPv6 issues), ECONNREFUSED, ENOTFOUND, or certificate errors.
Common causes
- Server unreachable / connect timeout
- localhost resolving to IPv6 ::1 while the server listens on IPv4
- DNS failure
- TLS certificate issues
- Proxy required but not configured (fetch ignores HTTP_PROXY)
⚡ Quick fix
- console.error(err.cause) to see the real error
- Use 127.0.0.1 instead of localhost
- Configure an undici ProxyAgent for corporate proxies
Detailed fix by platform
Node.js
try { await fetch(url); } catch (e) { console.error(e.cause); }
How to diagnose
- Cause — What is err.cause?
- Address — IPv4 vs IPv6?
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 2 Oct 2026