Next.js 13 배포시 TypeError fetch failed

Error occurred prerendering page, TypeError fetch failed

2 min read
MemoBugNext.js

문제

Next.js 13 으로 App router 프로젝트를 진행하다가 deploy 시 아래와 같은 에러가 발생했습니다.

Error occurred prerendering page "/contest". Read more: https://nextjs.org/docs/messages/prerender-error
TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11372:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Error occurred prerendering page "/". Read more: https://nextjs.org/docs/messages/prerender-error
TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11372:11)
   Generating static pages (20/21) [  ==]
 ✓ Generating static pages (21/21)

> Export encountered errors on following paths:
        /community/page: /community
        /contest/page: /contest
        /page: /

해결법

Node의 버전을 업그레이드하거나 혹은 다운그레이드 하기, Next.js 업데이트 하기, App router 폴더 구조 문제, 혹은 추후에 해결되어야 할 문제라 현재는 방법이 없다는 등등..

여러가지 해결법을 많이 찾아보았다가 동적 페이지 설정으로 해결되었습니다.

// src/app/page.tsx
export const dynamic = "force-dynamic";

const Home = async () => {
  const res = await getData();
  ...
};

매번 다른 데이터를 가져와 렌더링해야 하는 페이지인데, API 도 Next.js 내에서 구현을 하다보니 해당 페이지를 정적 페이지로 빌드하려고 하니 문제가 생기는 것 같습니다. 클라이언트 컴포넌트는 해당 에러에서 발견되지 않았고, 동적 라우팅된 페이지 역시 기본적으로 동적 페이지로 빌드하다 보니 별도로 설정되어 있지 않은 기본적인 서버 컴포넌트들이 에러가 되는 것 같습니다.

2

틀린 내용이 있다면 지적해 주시고,
더 좋은 방법이나 생각을 공유해주세요.

banner
  • 문제
  • 해결법
React vs PreactStorybook 사용법