HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🌟
Programmers 최종 플젝 6조
/
[프론트] TWL
[프론트] TWL
/
Window is not defined
Window is not defined
Window is not defined

Window is not defined

생성일
Dec 6, 2021 03:27 AM
태그
Next.js
작성자
해결 완료
해결 완료

🔥 배경

다른 팀의 레포지토리를 보다가 Window 객체를 쓸 수 없는 상황이 발생했다는 오류를 발견했다.

호오... 나쟈냐?!

 

⭐ 해결 방법

이는 Next.js에서 서버 사이드 렌더링과 클라이언트 사이드 렌더링 모두를 관리하기 때문이었다.
가령, 서버사이드 렌더링을 할 때에는, 이 친구는 우리가 클라이언트 사이드 렌더링을 한다는 것을 인지하지 못한다.
따라서, 이를 빌드할 때, CSR과 SSR이 충돌해버리는 것이다.
 

그렇다면 어떻게 해야 하는가?

Next.js는 서버 사이드에서 먼저 실행 되고, 그 후에클라이언트 사이드에서 실행된다. 그런데 윈도우 객체는 클라이언트 사이드에만 존재한다. 따라서 윈도우 객체를 사용하고 싶다면 componentDidMount 라이프사이클 메서드 내에 코드를 작성해야한다.
그것도 싫다면, next/dynamic을 사용하자. 특정 조건에서만 동적으로 import하도록 설정할 수 있으며, ssr:false처럼 지정할 수도 있다.
  • 공식 문서에서 추천하는 것 : next/dynamic
  • 외부 컴포넌트 사용: react-no-ssr
 

👏🏻 참고자료

https://sumini.dev/issue/000-nextjs-window,document-is-not-defined/