Ошибка: обязательный параметр (языки) не был предоставлен в виде строки в generateStaticParams для /[языки]

Я пытаюсь сгенерировать некоторые статические параметры для своего приложения Next.js 13 с помощью generateStaticParams, но продолжаю получать следующую ошибку:

«Ошибка: обязательный параметр (языки) не был предоставлен в виде строки в generateStaticParams для /[языки]»

Вот соответствующий код:

      import * as React from 'react';
import { NextIntlClientProvider } from 'next-intl/client';
import { notFound } from 'next/navigation';

export function generateStaticParams(): { params: { locale: string } }[] {
    return [{ params: { locale: 'en' } }, { params: { locale: 'de' } }];
}

export default async function LocaleLayout({
    children,
    params: { locale },
}: {
    children: React.ReactNode;
    params: { locale: string };
}) {
    if (typeof locale !== 'string') {
        return notFound();
    }

    let messages;
    try {
        messages = (await import(`@/messages/${locale}.json`)).default;
    } catch (e) {
        return notFound();
    }

    return (
        <html lang={locale}>
            <body>
                <NextIntlClientProvider locale={locale} messages={messages}>
                    {children}
                </NextIntlClientProvider>
            </body>
        </html>
    );
}

1 ответ

Ваши параметры должны точно совпадать. В этом случае ваша папка называетсяlocales(множественное число) и ваши параметры возвращаютсяlocale(единственное число).

      export function generateStaticParams(): { params: { locales: string } }[] {
    return [{ params: { locales: 'en' } }, { params: { locales: 'de' } }];
}
Другие вопросы по тегам