TypeError: fetch failed

En server-side `fetch` misslyckades med nätverksfel, vanligtvis för att en server-komponent försöker nå `localhost`.

Förklaring

I server-komponenter och Route Handlers körs fetch i Node.js, inte i webbläsaren. Anrop till http://localhost:3000 fungerar under lokal utveckling men kraschar i produktionsmiljöer där den egna servern inte är åtkomlig via localhost.

Ett vanligt misstag är att hämta data från egna API-routes via fetch('http://localhost:3000/api/data') i en server-komponent. Det är ett onödigt nätverkshopp. Server-komponenter kan importera och anropa logiken direkt utan HTTP.

TypeError: fetch failed utan mer kontext beror ofta på ECONNREFUSED (ingen server lyssnar på adressen) eller ENOTFOUND (värdnamnet löser inte upp).

Vanliga orsaker

Server-komponent eller Route Handler som fetchär egna API-routes via absolut localhost-URL. Produktionsmiljö som saknar nätverksaccess till den angivna adressen.

Lösning

Importera datahämtningslogiken direkt i stället för att gå via HTTP:

// Onödigt nätverksanrop
const data = await fetch('http://localhost:3000/api/posts').then(r => r.json());

// Bättre — importera logiken direkt
import { getPosts } from '@/lib/posts';
const data = await getPosts();

För externa API:er, kontrollera att URL:en är korrekt och att produktionsmiljön har utgående nätverksaccess till tjänsten.