Error: async/await is not yet supported in Client Components, only Server Components. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.

En fil markerad med `'use client'` exporterar en `async`-komponent, vilket inte stöds.

Förklaring

Async-komponenter är ett Server Component-koncept. React renderar serverkomponenter asynkront och inväntar deras svar, men klientkomponenter renderas synkront i webbläsaren och kan inte vara async funktioner.

Felet uppstår vanligast i två situationer: när en server-komponent av misstag märks med 'use client', eller när en klientkomponent görs async för att kunna använda await direkt i komponentkroppen i stället för useEffect.

Datahämtning i klientkomponenter hanteras med useEffect och lokalt state, eller med ett datahämtningsbibliotek.

Vanliga orsaker

'use client' tillagt i en server-komponent utan att ta bort async-nyckelordet. async tillagt i en klientkomponent för att hämta data direkt i render-fasen.

Lösning

Ta antingen bort 'use client' och behåll async, eller ta bort async och hämta data med useEffect:

// Alternativ 1 — behåll som server-komponent
export default async function Page() {
  const data = await fetchData();
  return <div>{data.title}</div>;
}

// Alternativ 2 — klientkomponent med useEffect
'use client';
import { useState, useEffect } from 'react';

export default function Component() {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetchData().then(setData);
  }, []);

  return data ? <div>{data.title}</div> : <div>Laddar...</div>;
}