해결된 질문
작성
·
131
0
src/app/(with-searchbar)/search/page.tsx
Type error: Type 'Props' does not satisfy the constraint 'PageProps'.
Types of property 'searchParams' are incompatible.
Type '{ q?: string | undefined; }' is missing the following properties from type 'Promise<any>': then, catch, finally, [Symbol.toStringTag]
vercel 명령어 사용시 build문제에서 에러가 생겼다고 하면서 위와 같은 타입 에러가 나오네요 ㅠ
선생님께서 제공해주신 github에서 내용을 가져와 적용해보았으나 같은 에러가 나오게되어 질문드립니다.
답변 2
0
안녕하세요 이정환입니다.
오류 메세지를 읽어보시면 searchParams 라는 Props의 타입 정의가 잘못되었다고 나와 있습니다.
이런 오류가 발생하는 이유는 우리 강의의 3.2) 페이지 라우팅 설정하기 의 6분 21초 경에 설명드리고 있듯이 Next.js 15.1 버전부터는 searchParams와 params의 타입이 모두 Promise로 래핑되어 제공되기 때문입니다. (자세한 내용은 앞서 언급해드린 챕터를 참고하세요!) 이에 해당 내용을 참고하셔서 코드 상에 serachParams와 params의 타입을 모두 Promise로 변경하시면 되겠습니다!
PS. 제가 GitHub에 올려둔 코드는 Next.js 15.1 이전 버전으로 개발되어 있어서 그대로 다운로드 받아 빌드하실 경우 이런 오류가 발생하지는 않을텐데, src 폴더만 복사하시거나 혹은 Next.js의 버전을 업그레이드 하신 것 같습니다. GitHub 코드의 버전도 최대한 빠른 시일 내로 업데이트 하도록 하겠습니다!
0
안녕하세요, 인프런 AI 인턴입니다. 범띵떵님.
Next.js 프로젝트를 Vercel에 배포하는 동안 발생한 타입 오류에 대해 설명드리겠습니다. 제공하신 에러 메시지에서는 searchParams
의 타입 충돌이 문제의 원인으로 확인됩니다.
타입 스크립트 에러 해결하기:
Promise
타입과 단순 객체 타입의 호환성 문제로 인해 발생하는 오류입니다.searchParams
는 Promise
로 타입이 지정되어 있습니다. 따라서 타입 정의를 명확히 해주어야 합니다.페이지 컴포넌트의 searchParams
타입 정의 확인:
searchParams
를 올바르게 타입을 지정해야 합니다. 보통 다음과 같이 비동기 데이터를 다룰 때 Promise
를 반환하는 것으로 처리해야 합니다. type PageProps = {
searchParams: Promise<{ q?: string }>
};
코드 수정 및 예외 처리:
searchParams
가 Promise
에서 then
을 사용한 후 객체로 반환되는지 확인해 주세요.Next.js 및 Vercel 환경 확인:
searchParams
를 Promise처럼 사용하고 있다면 비동기 함수로 변경하고 await를 사용하여 적절하게 데이터를 받아오는지 확인해야 합니다.아래는 비슷한 문제를 해결한 기존 답변 링크입니다:
- Type error: Type ‘{ searchParams: { q?: string | undefined; }; }’ does not satisfy the constraint ‘PageProps’
위의 해결 방법들이 오류를 해결하는데 도움이 되기를 바랍니다. 문제가 지속된다면 해당 코드를 포함한 프로젝트의 일부 구성을 다시 점검해 보시기를 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.