PageProps Type Errors in Next.js. Type '{ slug: string; }' is missing the following properties from type 'Promise<any>'
-
После обновления Next js до 15 версии, в динамических маршрутах разработчики некоторые изменения, что приведет к ошибкам при сборке проекта.
пример:
Type error: Type 'Props' does not satisfy the constraint 'PageProps'. Types of property 'params' are incompatible. Type '{ slug: string; }' is missing the following properties from type 'Promise<any>': then, catch, finally, [Symbol.toStringTag]
Разработчики сделали динамические параметры асинхронными, поэтому нужно будет поменять типы, и получать их мы должны, например, через
await
до 15 версии:
// СТАРЫЙ КОД type Props = { params: { slug: string; }; }; export async function generateMetadata({ params: { slug } }: Props) { const { category } = await fetchData(slug); ... } } export default async function Page({ params: { slug } }: Props) { const data = await fetchData(slug); ... }
после 15 версии:
// НОВЫЙ КОД type Props = { params: Promise<{ slug: string; }>; }; export async function generateMetadata(props: Props) { const { slug } = await props.params; const { category } = await fetchData(slug); ... } } export default async function Page(props: Props) { const { slug } = await props.params; const data = await fetchData(slug); ... }