I have migrated my nextjs website from pages router to app router and I am getting a DYNAMIC_SERVER_USAGE error when I attempt to add page metadata using the generateMetadata function.
I know that export const dynamic = "force-dynamic"; solves the error but I want to generate all of the pages at build time Так что это не вариант.
Почему GenerateMetAdata вызывает эту ошибку? Каждая ссылка, которую я могу найти, относится к страницам, которые не могут быть сгенерированы статически, но все страницы построены хорошо, когда я удаляю GenerateMetAdata , и я не вызываю каких-либо функций внутри GenerateMetAdata .
Спасибо
export const dynamic = "force-static";
import fs from "fs";
import path from "path";
import { getPostData, IPost } from "../../../lib/posts";
import Date from "../../../components/date";
import { Metadata } from "next";
const postsDirectory = path.join(process.cwd(), "src/posts");
interface IPageProps {
id: string;
}
export async function generateMetadata(): Promise {
return {
title: "title",
description: "description",
};
}
export default async function Page({
params,
}: {
params: Promise;
}): Promise {
const { id } = await params;
const { title, date, contentHtml } = await getPostData(id);
return (
{title}
className="text-mob md:text-lg lg:text-lg"
dangerouslySetInnerHTML={{ __html: contentHtml }}
/>
);
}
export async function generateStaticParams(): Promise {
const fileNames = fs.readdirSync(postsDirectory);
return fileNames.map((fileName) => {
return {
params: {
id: fileName.replace(/\.md$/, ""),
},
};
});
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... temetadata