강의

멘토링

로드맵

Inflearn brand logo image

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

나를응원해님의 프로필 이미지
나를응원해

작성한 질문수

한 입 크기로 잘라먹는 Next.js(v15)

5.2) 풀 라우트 캐시 2

하이드레이션 실패에러가 뜨는데요.

해결된 질문

작성

·

418

0

npm run dev로 프로젝트 시작할 때 보면 하이드레이션 오류가 자주 뜨거든요.
페이지 이동했다가 다시 오면 에러가 사라지길래 그냥 강의 들었었는데.
빠트린 코드가 있는가 싶어서 새로 프로젝트를 새로 만들었거든요.

 

근데. 처음부터 같은 에러가 발생하네요!!!!!!!!!!!!!!!!!! 제 컴퓨터가 이상한건지....
다른 분들은 에러가 안나는걸까요>??ㅜ_ㅜ 어떻게 했더니 에러가 났다. 이걸 말씀드려야 하는데ㅎㅎ
허허허..... 어디서 왜 에러가 났는지 감이 안오네요

 

< 에러 >

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.

See more info here: https://nextjs.org/docs/messages/react-hydration-error


image.png

 


 

검색해보니까. 뭐 버전차이 이런것도 있는 것 같아서 제 의존성 버전을 봤는데..
최신 버전으로 설치된건데. 음...이거 말고 next 15.0.3 react 19.0.0은 설치가 안되더라고영 ㅎㅎ....
원인을 밝히기가 어렵네영.

  "dependencies": {
    "react": "19.0.0-rc-66855b96-20241106",
    "react-dom": "19.0.0-rc-66855b96-20241106",
    "next": "15.0.3"
  },

 

혹시나 해서 강사님 패키지 봤는데 next가 15.0.0버전이더라고요 이거로 설치했더니
하이드레이션 에러는 안뜨네요!!! 험......... 버전 문ㅈㅔ였나봐요..

  "dependencies": {
    "react": "19.0.0-rc-f994737d14-20240522",
    "react-dom": "19.0.0-rc-f994737d14-20240522",
    "next": "15.0.0-rc.0"
  },

 

나름 해결한 것 같긴한데, 뭔가 찜찜해서 ㅎㅎ

  • 버전 차이로도 저와 같은 에러가 발생할 수 있는건가요??

  • 버전을 바꿔서 install 했는데, 이 상태로 강의를 계속 들어도 되겠죠???

 

주저리주저리... 고민의 글을 적어봤습니다ㅎㅎ

 

 

답변 2

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

이상하네요 .. 19.0.3 버전으로 테스트 해 봤을 때에도 하이드레이션이 에러가 발생하지 않았는데 구체적으로 어떤 상황인지 알아야 도움을 드릴 수 있을 것 같습니다 😢

하이드레이션 오류가 발생한 이유가 궁금하시다면 에러가 발생한 코드를 그대로 GitHub에 업로드 하신 다음 링크로 전달 부탁드립니다!

아 !!! 발견한거 같아요.

강의 듣고 이전 코드를 지우지 않아서 생겼던 문제 같아요

혹시 제가 발견한 게 맞는지 한번 봐주심 감사하겠씀니다.

 

하이드레이션 에러가 발생하는 시기?를 살펴보니,

book/[id] 상세페이지 이동하고 나서 에러가 뜨는 것 같아서

[id]페이지를 살펴봤는데요

 

정적 파라미터 생성 generateStaticParams()가 작성돼 있더라고요.

book/id가 123을 제외하고 나머지는 계속 하이드레이션

에러가 나는 것 같길래,

한번 지워봤더니. 에러는 더이상 나지 않는것 같슴니다. !!!!!!

 

아직 Next.js를 공부하고 있는 상태라 헷갈리기는 한데@_@

제가 이해한 바로는...

클라이언트에서 동적으로 페이지를 보여달라고 요청하는데

넥스트 서버에서 SSG로 생성된 페이지가 123 밖에 없으니

클라이언트와 서버 간에 데이터가 일치하지 않는다는 에러는 낸 것 같습니다.

요렇게 이해를 해도 될까용?ㅎ..........

 

호옥...시 몰라 깃헙 주소 첨부하겠습니다.

바쁜시간 질문 봐주셔서 정말 감사함담 !

https://github.com/J-SoYoung/questions/commit/cc2712c6351f55409a1df78622fbbd4f59041d84

 

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

음 살펴보니 말씀해주신 부분으로 인해 하이드레이션 에러가 발생하는 건 아마 아닌 것 같아요 ... 코드 상에 큰 이상이 없는 걸로 봐서는 Next.js의 자체적인 오류인 것 같습니다 😢다음에도 이런 현상이 똑같이 발생하실 경우 프로젝트 가동을 중단하신 다음
.next 폴더를 제거후 다시 프로젝트를 가동해보시면 문제가 해결 될 수 있습니다.

그래도 안된다면 언제든 질문주세요 😃

그렇군요오 !!!!!!!!!

답변 주셔서 감사합니다~ !!!!

0

안녕하세요, 인프런 AI 인턴입니다. 나를응원해님.

하이드레이션 오류에 대해 문의해 주셔서 감사드립니다. 하이드레이션 관련 오류는 종종 서버에서 렌더링된 HTML과 클라이언트에서 렌더링되는 결과가 불일치할 때 주로 발생합니다. 이를 해결하기 위해 몇 가지 주의할 점과 해결 방법을 소개해드리겠습니다.

하이드레이션 오류의 주요 원인

  1. ** 서버/클라이언트 간 불일치 요소**: 서버와 클라이언트에서 절대적인 값이 일치하지 않을 경우 발생할 수 있습니다 (예: Date.now(), Math.random()).
  2. 국가별 날짜 또는 언어 설정: 서버 측에서 렌더링되는 현지화된 날짜 포맷이 클라이언트에서 다르게 나타날 수 있습니다.
  3. 외부 데이터 비일치: 서버에서 받은 외부 데이터가 클라이언트에서 변경될 경우가 있습니다.
  4. 테그 중첩 오류: 잘못된 HTML 테그 구조로 인해 오류가 발생할 수 있습니다.
  5. 브라우저 확장 프로그램: 특정 브라우저 확장 프로그램이 HTML 구조에 간섭할 수 있습니다.

원인을 해결하는 몇 가지 팁

  • JavaScript 환경 제어: if (typeof window !== 'undefined') 같은 구문으로 클라이언트 전용 코드를 분리합니다.
  • 동적 콘텐츠 관리: 가능한 한 서버와 클라이언트의 결과가 일치하도록 설정하고, 동적 content는 클라이언트에서만 생성되도록 유도합니다.
  • 구성 관리: 서버와 클라이언트 다르게 동작하는 환경 변수(volatil values)를 확인하세요.
  • 패키지 호환성 점검: 각 패키지 간의 버전 호환성을 주기적으로 점검하고, 예제와 동일한 설정을 유지하도록 합니다.

버전 차이로 인한 에러가 발생한 이유는 각 버전 간의 내부적인 동작 방식이 다를 수 있기 때문입니다. 특히, 새로운 버전에서는 하위 호환성이 완벽하지 않을 때도 있습니다. 따라서 현재 사용 중인 강의에 맞는 버전으로 돌리는 것이 가장 확실한 해결책입니다. 사용 중인 버전이 강의와 동일하다면 수강이 더 원활하게 진행될 것입니다.

관련된 질문은 아래 링크에서 추가적으로 찾아보실 수 있습니다:
- “Next.js에서 하이드레이션 오류 해결 방법”

위와 같은 내용들이 도움이 되길 바라며 강의를 수강하는데 있어 버전을 수정하여도 큰 문제가 없을 것으로 판단됩니다. 추가로, 새 버전의 기능이 필요하다면 별도의 프로젝트에서 먼저 테스트해보시는 것도 좋은 방법입니다.

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

나를응원해님의 프로필 이미지
나를응원해

작성한 질문수

질문하기