Heim > Web-Frontend > js-Tutorial > Warum erhalte ich Abruffehler, wenn ich in der Produktion eine statische Next.js-Website erstelle?

Warum erhalte ich Abruffehler, wenn ich in der Produktion eine statische Next.js-Website erstelle?

Patricia Arquette
Freigeben: 2024-12-20 02:22:10
Original
667 Leute haben es durchsucht

Why Do I Get Fetch Errors When Building a Next.js Static Website in Production?

Fehler beim Generieren einer statischen Website für Next.js in der Produktion

Next.js-Benutzer können beim Erstellen einer statischen Website für die Produktion auf Abruffehler stoßen (npm run build) trotz eines funktionierenden Entwicklungs-Setups (npm run dev). Dieses Problem tritt auf, wenn Daten von API-Routen innerhalb von getStaticProps- oder getStaticPath-Funktionen abgerufen werden.

Ursache

Next.js erstellt statische Websites, indem es Seiten und Daten vorab rendert Server, bevor Sie sie in einer Hosting-Umgebung bereitstellen. Allerdings sind API-Routen, die normalerweise für den dynamischen Datenabruf verwendet werden, während des Build-Prozesses nicht verfügbar, da der Server noch nicht aktiv ist.

Lösung

Zu lösen Um dieses Problem zu lösen, vermeiden Sie den Zugriff auf interne API-Routen über die Funktionen getStaticProps/getStaticPath. Diese Funktionen werden ausschließlich auf der Serverseite ausgeführt und sollten nicht auf externe Netzwerkanforderungen angewiesen sein.

Empfohlener Ansatz

Betten Sie stattdessen serverseitigen Code direkt in getStaticProps/getStaticPath ein um Daten aus der Datenquelle abzurufen. Da diese Funktionen auf dem Server ausgeführt werden, ist der Zugriff auf Datenbanken oder die Durchführung serverseitiger Vorgänge zulässig.

Beispiel-Refactoring

In Ihrem bereitgestellten Code finden Sie die geänderten getStaticProps und getStaticPaths-Funktionen unten:

export const getStaticProps = async ({ params: { slug }, locale }) => {
    const result = db.filter(item => item.slug === slug)
    const data = result.filter(item => item.locale === locale)[0]
    const { title, keywords, description } = data
    return {
        props: {
            data,
            description,
            keywords, 
            title
        }
    }
}

export const getStaticPaths = async () => {
    const paths = db.map(({ slug, locale }) => ({ params: { slug: slug }, locale }))
    return {
        fallback: true,
        paths,
    }
}
Nach dem Login kopieren

Durch die Implementierung dieser Änderungen können Sie die dabei auftretenden Abruffehler beseitigen Produktionsaufbauten.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich Abruffehler, wenn ich in der Produktion eine statische Next.js-Website erstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage