검색
검색
공개 노트 검색
회원가입로그인

Next.js : Minified React error #425 해결하기

얼마 전 부터 Next에서 리액트 에러가 나기 시작했다.

Uncaught Error: Minified React error #425; visit https://reactjs.org/docs/error-decoder.html?invariant=425 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.

자세한 에러를 찾아왔더니 다음과 같았다. Text content does not match server-rendered HTML.

서버에 렌더링된 것과 로컬에 렌더링된 것이 맞지 않는 다는 것이다. 알다시피 넥스트는 서버에서 한 번 프론트에서 한 번 총 두번의 렌더링을 거친다.

그런데 문제는 이게 로컬 서버에는 안나오고 프로덕션 서버에만 나온다는 것이다. 만약 로컬 서버에서 나온다면 에러의 원인이 뭔지 알려주기 때문에 쉽게 고칠 수 있다.

오늘 오후에 한참을 찾아보다가 원인을 알게 되었다. 바로 시간이었다.

서버에서는 UTC 시간을 사용하고 있고 프론트에서는 KST를 사용하기 때문에 두 화면의 차이가 발생하는 것이다.

그래서 서버에서 데이터를 가져올 때 UTC 시간을 KST 시간으로 통일시켜줌으로써 해결했다.

import dayjs from "dayjs";
import utc from "dayjs/plugin/utc";
import timezone from "dayjs/plugin/timezone";

dayjs.extend(utc);
dayjs.extend(timezone);

...

export const getServerSideProps = async () => {
...
  items.forEach((item) => {
    item.createdAt = dayjs(page.createdAt)
        .tz("Asia/Seoul")
        .format("YYYY-MM-DD");
  })
});

이 외에 날짜를 클라이언트 사이드에서만 처리해주는 경우도 있다.

조회수 : 638
heart
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
T
페이지 기반 대답
AI Chat