So beheben Sie Probleme mit KI-Codierungsagenten, die veraltete Next.js-APIs verwenden
KI-Agenten generieren häufig Next.js-Code unter Verwendung veralteter Pages Router-Muster, getServerSideProps und entfernter APIs, die App Router-Projekte beschädigen.
KI-Agenten, die mit älteren Next.js-Daten trainiert wurden, erstellen routinemäßig getServerSideProps, getStaticProps und next/router-Importe in App Router-Projekten, in denen keine dieser APIs existieren.
Das Symptom
Der Agent erstellt eine Seite unter Verwendung von Pages Router-Konventionen in einem app/-Verzeichnis, was zu einem Build-Fehler oder einem stillen No-Op führt.
// app/dashboard/page.tsx — WRONGexport async function getServerSideProps() { const data = await fetchData(); return { props: { data } };}
export default function Dashboard({ data }) { return <div>{data.title}</div>;}Der getServerSideProps-Export wird im App Router stillschweigend ignoriert; die Seite wird ohne Daten und ohne Fehler gerendert.
Warum es passiert
Modelle werden auf massiven Next.js-Korpora trainiert, die stark in Richtung der Pages Router-Muster vor Version 13 tendieren. Der App Router wurde in Next.js 13 (stabil in 14) eingeführt, und der Trainings-Cut-off vieler Modelle liegt vor der weit verbreiteten Einführung. Der Agent vermischt die beiden Paradigmen, weil beide in Dateien namens page.tsx existieren.
Wie man es erkennt
- Importe von
"next/router"statt"next/navigation"in einemapp/-Verzeichnis. getServerSideProps,getStaticPropsodergetStaticPathsaus Dateien unterapp/exportiert.useRouterwird ohne"use client"am Anfang der Datei aufgerufen.next.config.jsverwendet nochexperimental.appDir(in Next.js 14 entfernt).
So beheben Sie es
Ersetzen Sie Datenabruf-Exporte durch asynchrone Server-Komponenten und verwenden Sie die next/navigation-Hooks clientseitig.
// app/dashboard/page.tsx — CORRECTasync function fetchData() { const res = await fetch("https://api.example.com/data", { next: { revalidate: 60 }, }); return res.json();}
export default async function Dashboard() { const data = await fetchData(); return <div>{data.title}</div>;}Checkliste:
[ ] No getServerSideProps / getStaticProps inside app/[ ] Use "next/navigation" (useRouter, usePathname, useSearchParams) not "next/router"[ ] Data fetching is async in the Server Component, not in a prop export[ ] next.config.js uses next.config.mjs and removes experimental.appDir[ ] Client-only hooks (useRouter etc.) are inside "use client" componentsFix-Prompt
This file uses Pages Router APIs (getServerSideProps, getStaticProps,next/router) inside an App Router project. Rewrite it using App Routerconventions: async Server Components for data fetching, next/navigation forrouting hooks, and "use client" only where browser APIs are required.Do not add any Pages Router exports.Test
# Fail fast: no Pages Router exports should appear under app/grep -rn "getServerSideProps\|getStaticProps\|getStaticPaths" app/ && echo "FAIL: Pages Router API found" || echo "OK"
# Confirm correct navigation importgrep -rn "from \"next/router\"" app/ && echo "FAIL: use next/navigation instead" || echo "OK"