인프런 커뮤니티 질문&답변

심현석님의 프로필 이미지
심현석

작성한 질문수

Next + React Query로 SNS 서비스 만들기

Next 프로젝트 시작하기

hydration 에러

작성

·

153

0

제로초님 하신대로 그대로 프로젝트를 생성하고 실행했더니 화면은 그대로 뜨는데 에러가 1개 있어서 봤더니 hydration 에러라고 뜨네요 ㅠㅠ 지금 z-com 프로젝트를 수업용 / 연습용으로 총 2개 진행중인데 수업용 프로젝트는 이런 에러가 없었는데 연습용에서 에러가 발생하네요. 아래는 에러 코드입니다 !

 

Console Error

Hydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used

- A server/client branch if (typeof window !== 'undefined'). - Variable input such as Date.now() or Math.random() which changes each time it's called. - Date formatting in a user's locale which doesn't match the server. - External changing data without sending a snapshot of it along with the HTML. - Invalid HTML tag nesting. It can also happen if the client has a browser extension installed which messes with the HTML before React loaded





답변 4

1

심현석님의 프로필 이미지
심현석
질문자

방금 해결했습니다 ! 리액트와 넥스트 버전이 서로 불일치해서 발생하는 문제였습니다

0

심현석님의 프로필 이미지
심현석
질문자

정말 해결한 것 같습니다. 브라우저 확장프로그램 때문이었습니다

0

심현석님의 프로필 이미지
심현석
질문자

해결이 된 줄 알았는데 계속 나네요 ㅠ

0

안녕하세요, 인프런 AI 인턴입니다. 심현석님.

질문에서 언급하신 “Hydration failed because the server rendered HTML didn’t match the client.” 오류는 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR) 간 불일치로 인해 발생하는 대표적인 하이드레이션 문제입니다. 이러한 문제는 여러 가지 이유로 발생할 수 있으며, 주로 서버에서 렌더링한 내용과 클라이언트에서 재구성된 내용이 일치하지 않을 때 발생합니다.

일반적인 해결 방법

  1. 동적 데이터 주의: Date.now(), Math.random() 등의 동적 함수는 서버와 클라이언트에서 각각 다른 값을 생성하게 되어 불일치의 원인이 될 수 있습니다. 만약 이러한 함수를 사용 중이라면, 값을 고정하거나 클라이언트 사이드에서만 사용하도록 변경해보세요.

  2. 브라우저 환경 체크: if (typeof window !== 'undefined')와 같은 코드를 사용하여 브라우저 환경 여부를 확인하는 것은 SSR 과정에서 올바른 사용이 필수적입니다. 예를 들어, 특정 코드가 브라우저에서만 실행되어야 한다면 이 조건문을 통해 서버에서 실행되지 않도록 해야 합니다.

  3. 외부 데이터 관리: 외부에서 데이터를 받아오는 경우, 서버와 클라이언트가 동일한 데이터를 가지도록 보장해야 합니다. 이를 위해 서버에서 데이터를 미리 불러와 HTML과 함께 전달하는 것도 한 방법입니다.

  4. HTML 태그 구조 검토: 잘못된 HTML 태그 구조는 하이드레이션 오류를 유발할 수 있습니다. 중첩 관계나 닫히지 않은 태그가 없는지 확인해보세요.

관련 질문 사례

다음은 유사한 문제에 대한 제로초 강사님의 답변입니다.
- ”@faker-js/faker 사용시 런타임 에러”
조현영 강사님은 서버와 클라이언트 간의 랜덤 데이터 불일치를 방지하기 위해 faker 같은 라이브러리 사용 시 랜덤 시드를 고정하는 방법을 안내하였습니다.

이 에러는 절대적으로 피할 수 있는 것은 아니며, 올바르게 관리되지 않은 코드나 동적 요소 사용이 원인일 수 있습니다. 특히 SSR이 포함된 프로젝트에서는 미세한 설정이나 코드 업데이트가 하이드레이션 문제를 일으킬 수 있기 때문에 코드 흐름과 데이터 입력 출력을 세심히 점검하시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

심현석님의 프로필 이미지
심현석

작성한 질문수

질문하기