해결된 질문
작성
·
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
검색해보니까. 뭐 버전차이 이런것도 있는 것 같아서 제 의존성 버전을 봤는데..
최신 버전으로 설치된건데. 음...이거 말고 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
안녕하세요 이정환입니다.
이상하네요 .. 19.0.3 버전으로 테스트 해 봤을 때에도 하이드레이션이 에러가 발생하지 않았는데 구체적으로 어떤 상황인지 알아야 도움을 드릴 수 있을 것 같습니다 😢
하이드레이션 오류가 발생한 이유가 궁금하시다면 에러가 발생한 코드를 그대로 GitHub에 업로드 하신 다음 링크로 전달 부탁드립니다!
안녕하세요 이정환입니다.
음 살펴보니 말씀해주신 부분으로 인해 하이드레이션 에러가 발생하는 건 아마 아닌 것 같아요 ... 코드 상에 큰 이상이 없는 걸로 봐서는 Next.js의 자체적인 오류인 것 같습니다 😢다음에도 이런 현상이 똑같이 발생하실 경우 프로젝트 가동을 중단하신 다음
.next 폴더를 제거후 다시 프로젝트를 가동해보시면 문제가 해결 될 수 있습니다.
그래도 안된다면 언제든 질문주세요 😃
0
안녕하세요, 인프런 AI 인턴입니다. 나를응원해님.
하이드레이션 오류에 대해 문의해 주셔서 감사드립니다. 하이드레이션 관련 오류는 종종 서버에서 렌더링된 HTML과 클라이언트에서 렌더링되는 결과가 불일치할 때 주로 발생합니다. 이를 해결하기 위해 몇 가지 주의할 점과 해결 방법을 소개해드리겠습니다.
Date.now()
, Math.random()
).if (typeof window !== 'undefined')
같은 구문으로 클라이언트 전용 코드를 분리합니다.버전 차이로 인한 에러가 발생한 이유는 각 버전 간의 내부적인 동작 방식이 다를 수 있기 때문입니다. 특히, 새로운 버전에서는 하위 호환성이 완벽하지 않을 때도 있습니다. 따라서 현재 사용 중인 강의에 맞는 버전으로 돌리는 것이 가장 확실한 해결책입니다. 사용 중인 버전이 강의와 동일하다면 수강이 더 원활하게 진행될 것입니다.
관련된 질문은 아래 링크에서 추가적으로 찾아보실 수 있습니다:
- “Next.js에서 하이드레이션 오류 해결 방법”
위와 같은 내용들이 도움이 되길 바라며 강의를 수강하는데 있어 버전을 수정하여도 큰 문제가 없을 것으로 판단됩니다. 추가로, 새 버전의 기능이 필요하다면 별도의 프로젝트에서 먼저 테스트해보시는 것도 좋은 방법입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아 !!! 발견한거 같아요.
강의 듣고 이전 코드를 지우지 않아서 생겼던 문제 같아요
혹시 제가 발견한 게 맞는지 한번 봐주심 감사하겠씀니다.
하이드레이션 에러가 발생하는 시기?를 살펴보니,
book/[id] 상세페이지 이동하고 나서 에러가 뜨는 것 같아서
[id]페이지를 살펴봤는데요
정적 파라미터 생성 generateStaticParams()가 작성돼 있더라고요.
book/id가 123을 제외하고 나머지는 계속 하이드레이션
에러가 나는 것 같길래,
한번 지워봤더니. 에러는 더이상 나지 않는것 같슴니다. !!!!!!
아직 Next.js를 공부하고 있는 상태라 헷갈리기는 한데@_@
제가 이해한 바로는...
클라이언트에서 동적으로 페이지를 보여달라고 요청하는데
넥스트 서버에서 SSG로 생성된 페이지가 123 밖에 없으니
클라이언트와 서버 간에 데이터가 일치하지 않는다는 에러는 낸 것 같습니다.
요렇게 이해를 해도 될까용?ㅎ..........
호옥...시 몰라 깃헙 주소 첨부하겠습니다.
바쁜시간 질문 봐주셔서 정말 감사함담 ! ♥
https://github.com/J-SoYoung/questions/commit/cc2712c6351f55409a1df78622fbbd4f59041d84