ReferenceError: location is not defined

윤지영·2024년 5월 2일
0

👿 error

> board@0.1.0 build
> next build       

   ▲ Next.js 14.1.3
   - Environments: .env.local

   Creating an optimized production build ...
 ✓ Compiled successfully
   Linting and checking validity of types  .. ⨯ ESLint: Failed to load config "next/babel" to extend from. Referenced from: E:\boot_camp\next\board\.eslintrc.json
 ✓ Linting and checking validity of types
 ✓ Collecting page data    
   Generating static pages (11/16) [==  ]
ReferenceError: location is not defined
    at E:\boot_camp\next\board\.next\server\chunks\621.js:1:27100
    at E:\boot_camp\next\board\.next\server\chunks\621.js:1:27874
    at t.startTransition (E:\boot_camp\next\board\node_modules\next\dist\compiled\next-server\app-page.runtime.prod.js:12:108548)
    at Object.push (E:\boot_camp\next\board\.next\server\chunks\621.js:1:27862)
    at d (E:\boot_camp\next\board\.next\server\app\write\page.js:1:3643)
    at nM (E:\boot_camp\next\board\node_modules\next\dist\compiled\next-server\app-page.runtime.prod.js:12:47419)
    at nL (E:\boot_camp\next\board\node_modules\next\dist\compiled\next-server\app-page.runtime.prod.js:12:64674)
    at nI (E:\boot_camp\next\board\node_modules\next\dist\compiled\next-server\app-page.runtime.prod.js:12:46806)
    at nM (E:\boot_camp\next\board\node_modules\next\dist\compiled\next-server\app-page.runtime.prod.js:12:47570)
    at nM (E:\boot_camp\next\board\node_modules\next\dist\compiled\next-server\app-page.runtime.prod.js:12:61663)
Error occurred prerendering page "/write". Read more: https://nextjs.org/docs/messages/prerender-error

✨ 해결

기존 router.push 로직을 useEffect로 감싸주었다.
=> 이렇게 하면 router.push 등의 코드가 서버 측에서 오류를 발생시키지 않고 useEffect는 컴포넌트가 렌더링된 후에 클라이언트 측에서만 실행되므로, 이 타이밍에 클라이언트 측 전용 로직을 안전하게 실행할 수 있다.

감사합니당..BavarianDuck89..💖

// 기존
 if (!session) {
      router.push("/api/auth/signin");
    }

// 변경
  useEffect(() => {
    if (!session) {
      router.push("/api/auth/signin");
    }
  }, [session, router]);
profile
쑥쑥쑥쑥 레벨업🌱🌼🌳

0개의 댓글

관련 채용 정보