0. 에러메세지
next. js를 그냥 설치만 했을 뿐인데 계속 콘솔창에 에러메세지가 났다.
Warning: Prop `className` did not match. Server: "__className_20951f vsc-initialized" Client: "__className_20951f" at body at html at RedirectErrorBoundary
1. 에러 해결과정
- 처음에는 아래 게시글에서 RootLayout 에 <body suppressHydrationWarning={true}> 이 태그를 추가하라고 했었다.
export default RootLayout({ children }) {
return (
<html lang="en">
<body suppressHydrationWarning={true}>
{children}
</body>
</html>
)
}
하지만, 이건 근본적인 해결책이 아니고 단순히 경고메세지를 숨기는 속성이었다.
- 서버와 클라이언트 간에 className 속성의 값이 다르게 렌더링 되었다는 건데...
나는 그냥 설치만했는데 뭐가 다르다는거지?
localhost:3000 에서 body 태그를 살펴보면 body 태그에 vsc-initialized가 추가되어있는 걸 확인 할 수 있다.
vsc-initialized 정체가 무엇인고...
검색해보니 Video Speed Controller 확장프로그램을 설치하면 body 태그에 추가된다는 것이었다.
확장프로그램을 삭제해보니 body 태그에 아무것도 없어졌다.!
className did not match 로만 검색했을 때는 자꾸 styled-components를 사용해서 그렇다는 게시물 밖에 안나왔었는데...
문제는 확장프로그램이었다. 확장프로그램을 잘 정리하자!!
그리고 애초에 Next.js 초기에 셋팅할 때 body 태그에 className 을 지워버리면 된다. {Inter} 이부분이 필요없기 때문이다.