안녕하세요! 서비스 배포를 하는데 에러가 생겨서 문의드립니다!
안녕하세요! 강의를 쭉 듣고, 배포 단계까지 왔는데 에러가 생겨서 진행이 안되어 문의드립니다!
vercel에서 에러는

Failed to compile.
src/app/[location]/page.tsx
Type error: Type 'Props' does not satisfy the constraint 'PageProps'.
Types of property 'params' are incompatible.
Type '{ location: string; }' is missing the following properties from type 'Promise<any>': then, catch, finally, [Symbol.toStringTag]
Error: Command "npm run build" exited with 1
이며, 그전에도
Route "/[location]" used params.location. params should be awaited before using its properties. Learn more:
위와 같은 에러가 떴고, 이는 경로 및 쿼리 파라미터를 위한 객체에서 런타임 에러가 뜨는걸로 확인했습니다! 강의를 똑같이 따라갔는데, 위와 같은 에러가 나는게 의아하여 한번 문의드립니다!
import HomeButton from "../components/HomeButton";
import { getForecast } from "../utils/getForecast";
type Props = {
params: {
location: string;
};
searchParams: {
name: string;
};
};
export function generateMetadata({ searchParams }: Props) {
return {
title: `날씨 앱 - ${searchParams.name}`,
description: `${searchParams.name} 날씨를 알려드립니다`,
};
}
export default async function Detail({ params, searchParams }: Props) {
const name = searchParams.name;
const res = await getForecast(params.location);
return (
<>
<h1>{name}의 3일 예보</h1>
<ul>
{res.forecast.forecastday.map((day) => (
<li key={day.date}>
{day.date} / {day.day.avgtemp_c}
</li>
))}
</ul>
<HomeButton />
</>
);
}

크리스마스 쉬는날 연락드려, 죄송하며 빠른 답변 부탁드립니다!
Answer 1
0
안녕하세요! 메리크리스마스 입니다!
배포 단계까지 오셨다니 고생 많으셨어요. 혹시 설치된 Next.js의 버전을 확인해주실 수 있을까요? 강의에서는 13.4.19 버전을 쓰고 있습니다. 그 이상 버전이 설치된 환경이라면 최신 문서 가이드를 참고하셔서 Props의 params를 Promise로 감싸보시면 해결될 것 같아요!
시도해보시고 다시 답변 남겨주세요.
1
공식문서를 참조해서 바꿨는데, 제 local에선 에러가 안뜨는데, 바꿀때마다 배포에 실패했습니다. 그러다가 params와 searchParams를 전부 Promise 타입으로 감싸고 await로 안전하게 접근하도록 수정했습니다.
import HomeButton from "../components/HomeButton";
import { getForecast } from "../utils/getForecast";
// 수정된 Props 타입
type Props = {
params: Promise<{ location: string }>; // params를 Promise로 정의
searchParams: Promise<{ name?: string }>; // searchParams도 Promise로 정의
};
export async function generateMetadata({ searchParams }: Props) {
const resolvedSearchParams = await searchParams; // 비동기로 처리
const name = resolvedSearchParams?.name || "Unknown";
return {
title: `날씨 앱 - ${name}`,
description: `${name} 날씨를 알려드립니다`,
};
}
export default async function Detail({ params, searchParams }: Props) {
// params와 searchParams를 비동기로 처리
const resolvedParams = await params;
const resolvedSearchParams = await searchParams;
const name = resolvedSearchParams?.name || "Unknown";
const location = resolvedParams?.location;
// location이 없는 경우 에러 처리
if (!location) {
throw new Error("Location is required!");
}
// API 호출
const res = await getForecast(location);
return (
<>
<h1>{name}의 3일 예보</h1>
<ul>
{res.forecast.forecastday.map((day) => (
<li key={day.date}>
{day.date} / {day.day.avgtemp_c}
</li>
))}
</ul>
<HomeButton />
</>
);
}
바뀐 코드는 위와 같습니다! 한 2~3시간 꼼짝없이 매달렸네요.. 제 실력이 너무 부족했던 것 같습니다..! 다른 분들은, 저처럼 실수없이 잘 해결하시길!
일단 배포는 완료했습니다!
안녕하세요 generateStaticParams 관해서 질문
0
366
2
next/image에 대한 질문
1
266
1
데이터 재검증 방법
1
277
2
next.js 에서 서버 컴포넌트 비중을 늘리는 이유
1
346
1
route.ts에 async 키워드가 필요한가요?
1
191
1
import 절대경로 설정 방법 질문 드립니다!
0
306
1
VSCode 확장프로그램은 어떤 것을 사용하셨나요?
0
338
1
환경변수 오류
1
243
1
하이드레이션 질문 드립니다
2
318
2
프론트엔드가 Next를 이용하여 API 만드는 이유가 궁금합니다~!
3
735
1
generateStaticParams에 대하여 질문 드립니다~!
2
867
1
선생님 혹시 Next.js 13에서의 React-query는 어떻게 생각하실까요?
2
1947
3
클라이언트 컴포넌트는 SSG? SSR?
2
859
2
SSR과 RSC의 차이점에 관하여 질문이 있습니다.
1
1290
1
nextjs의 14버전에서 data fetch
1
1422
1
비동기 호출, fetch, 라우트 핸들러 관련 질문입니다.
1
427
1
revalidate 질문
1
479
1
섹션3. 날씨 재검증하기 NextRequest 질문입니다.
1
338
1
메타데이터 관련 질문
0
215
1
비동기 호출 관련 질문있습니다!
2
327
1
Revalidate 부분 질문
0
345
1
서버 컴포넌트 관련 질문입니다!
3
1692
5
Data Fetching 관련 질문 있습니다~
2
522
1
useRouter 를 import 할때 next/router만 뜨는 경우
0
612
2

