Next.js 빌드 에러 해결: Date 객체 렌더링 오류 (Objects are not valid as a React child)
Next.js 빌드 에러 해결: Date 객체 렌더링 오류 완벽 가이드
안녕하세요! 오늘은 Next.js 프로젝트를 빌드(npm run build)하거나 정적 페이지를 생성할 때 발생하는 대표적인 렌더링 에러를 해결해 보겠습니다. 특히 옵시디언(Obsidian) 기반의 블로그나 마크다운 데이터를 가져와서 웹에 뿌려줄 때 자주 발생하는 문제입니다.
1. 에러 현상: "Objects are not valid as a React child"
Next.js 빌드 중 다음과 같은 에러가 발생하며 중단된다면 99% 데이터 형식 문제입니다.
⨯ Next.js build worker exited with code: 1 Error: Objects are not valid as a React child (found: [object Date]). If you meant to render a collection of children, use an array instead.
이 에러는 React가 화면에 글자를 그려내려는데, 문자열(String)이 아닌 JavaScript의 Date 객체를 그대로 넘겨받았을 때 발생합니다.
2. 문제의 원인 분석
우리가 옵시디언이나 마크다운 문서 상단(Frontmatter)에 다음과 같이 작성하면:
---
date: 2026-04-13
---
gray-matter 같은 파싱 라이브러리는 이 2026-04-13을 단순한 글자가 아니라 JavaScript의 Date 객체로 자동 변환합니다.
문제는 React의 중괄호 { } 안에는 문자열이나 숫자만 들어올 수 있다는 점입니다. Date 객체를 그대로 렌더링하려고 하면 React는 이를 화면에 어떻게 표시해야 할지 몰라 빌드를 중단해버립니다.
3. 해결 방법: 명시적 문자열 변환 (Serialization)
해결책은 아주 간단합니다. 데이터를 JSX에 넣기 전에 **문자열(String)**로 바꿔주기만 하면 됩니다.
방법 1: 컴포넌트 내부에서 변환 (가장 쉬운 방법)
에러가 발생하는 페이지 파일(예: [slug]/page.tsx)에서 날짜를 출력하는 부분을 수정하세요.
TypeScript
// ❌ 수정 전: 에러 발생
<span>{post.date}</span>
// ✅ 수정 후 (1): 표준 ISO 형식 (2026-04-13T00:00:00.000Z)
<span>{post.date.toISOString()}</span>
// ✅ 수정 후 (2): 한국 날짜 형식 (2026. 4. 13.) - 추천!
<span>{post.date.toLocaleDateString('ko-KR')}</span>
방법 2: getStaticProps / 서버 컴포넌트에서 변환
Next.js의 데이터 페칭 단계에서 미리 문자열로 바꿔서 넘겨주는 것이 더 안전합니다.
JavaScript
// 데이터를 가져오는 시점에 변환
const post = {
...data,
date: data.date.toISOString() // 여기서 이미 문자열로 변환됨
};
4. SEO를 위한 추가 팁: 날짜 형식 통일하기
블로그의 검색 엔진 최적화(SEO)를 위해서는 날짜 형식을 일정하게 유지하는 것이 좋습니다. date-fns와 같은 라이브러리를 사용하면 훨씬 깔끔하게 관리할 수 있습니다.
Bash
npm install date-fns
TypeScript
import { format } from 'date-fns';
// 2026-04-13 형식으로 깔끔하게 출력
<span>{format(new Date(post.date), 'yyyy-MM-dd')}</span>
5. 결론: "항상 직렬화를 확인하세요"
이 에러는 비단 Date 객체뿐만 아니라, 의도치 않게 컴포넌트 내부에 일반 Object를 넣었을 때도 발생합니다.
-
체크리스트:
-
에러 메시지에
found: [object Date]가 있는지 확인한다. -
마크다운 파싱 과정에서 날짜가 객체로 변환되었는지 확인한다.
-
반드시
.toISOString()이나.toString()으로 변환 후 렌더링한다.
-
도움이 되셨나요? 같은 문제를 겪는 분들에게 유익한 정보가 되길 바랍니다. 궁금한 점은 댓글로 남겨주세요!
작성 정보
-
Date: 2026-04-13
-
Author: Gemini AI
-
Keywords: Next.js Prerender Error, React Child Date Object, Next.js Build Failure