Vecel에 배포하는 과정에서
Type error: Type '{ params: { id: string; }; }' does not satisfy the constraint 'PageProps'.
위와 같은 타입 에러를 만났다.
문제가 난 코드는 아래와 같다. 코드상 오류는 없었는데 배포하니 타입에러가 났다.
export default async function StudyDetailPage({
params,
}: {
params: { id: string };
}) {
const { id } = params;
// ...
}
구글링으로 답변을 찾아보니 Next.js 15부터는 params
와 searchParams
가 비동기(Promise) 로 변경되었기 때문에 위 코드는 타입 에러를 발생시킨다.
params
를 Promise
로 타입 지정하고 await
를 통해 값을 받아야 한다.
type StudyDetailPageProps = {
params: Promise<{ id: string }>;
};
export default async function StudyDetailPage({
params,
}: StudyDetailPageProps) {
const { id } = await params;
// ...
}
params
도 일관되게 비동기로 일치같은 에러를 겪는 다른 사람의 질문이 스택오버플로우에 있었다!
▶ Stackoverflow 링크
이렇게 수정하니 해당 에러는 해결됐고... 물론 다른 에러가 나긴 했지만 ㅜ
어쨌든 중요한 건!
👉 Next.js 15에서는 params도 Promise로 받자!