개발 일지/에러 처리

[에러 해결] getStaticProps메소드 사용 중 발생 "This error happened while generating the page. Any console logs will be displayed in the terminal window."

2023. 4. 20. 17:39
목차
  1. 😡 에러 상황
  2. 🧐 대응한 방법
  3. 👏 해결 방법
  4. 🤔 느낀점

😡 에러 상황

Next.js의 getStaticProps메소드를 사용하여 서버로부터 데이터를 미리 받아오는 코드 구현하던 중, 에러 발생

// pages/test.tsx
import Layout from '@components/common/Layout';
import React from 'react';
import instance from '@apis/_axios/instance';


const Test = ({ data }) => {
  console.log(data);
  return <Layout></Layout>;
};
export const getStaticProps = async () => {
  const data = await instance.get('/members/me');

  return {
    props: {
      data: data.data,
    },
  };
};

export default Test;

"This error happened while generating the page. Any console logs will be displayed in the terminal window."

 

🧐 대응한 방법

1. chatGPT에 질문했으나 명확한 답을 주지 않음. chatGPT가 2021년 정보까지 가지고 있다보니, 그 이후의 정보에 대해 접근을 하지 못한 모양이다.

2. api 요청을 getStaticProps가 아니라 Test컴포넌트 안에서 요청했더니 정상적인 출력

-> 그렇다면, api에는 이상이없고 getStaticProps에서 요청한 것이 문제라는 것

3. instance -> axios로 바꿔봄

import Layout from '@components/common/Layout';
import React from 'react';
import instance from '@apis/_axios/instance';
import axios from 'axios';
import { CONFIG } from '@config';
import { getToken } from '@utils/localStorage/token';

const Test = ({ data }) => {
  console.log(data);
  return <Layout></Layout>;
};

export const getStaticProps = async () => {
  const data = await axios.get(`${CONFIG.API_BASE_URL}/members/me`, {
    headers: {
      Authorization: getToken().accessToken,
    },
  });
  console.log(data);

  return {
    props: {
      data: data.data,
    },
  };
};

export default Test;

  • 401 에러 발생 : 인증 오류

4. getToken()에서 토큰을 가져오지 못함 -> token을 하드 코딩으로 교체

import Layout from '@components/common/Layout';
import React from 'react';
import instance from '@apis/_axios/instance';
import axios from 'axios';
import { CONFIG } from '@config';
import { getToken } from '@utils/localStorage/token';

const Test = ({ data }) => {
  console.log(data);
  return <Layout></Layout>;
};

export const getStaticProps = async () => {
  const data = await axios.get(`${CONFIG.API_BASE_URL}/members/me`, {
    headers: {
      Authorization:
        'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0MDEiLCJyb2xlcyI6WyJST0xFX1VTRVIiXSwiaWF0IjoxNjgxMjg0NTU4LCJleHAiOjE2ODEyODYzNTh9.OGMn-NKeCMW0yLO1J59ROkUutfjdEt36q59_RdGI2Bs',
    },
  });
  console.log(data);

  return {
    props: {
      data: data.data,
    },
  };
};

export default Test;

정상적인 출력 !

👏 해결 방법

위 사진처럼 getStaticProps 안에서 localStorage에 접근하면 not defined에러가 발생한다. getStaticProps는 서버 측에서 데이터를 먼저 fetching 하여 클라이언트에게 데이터를 넘겨주는 것이기에, 브라우저가 제공해주는 Window Object methods인 localStorage에 접근하지 못한다. 그렇다고 매번 하드코딩으로 token을 넘겨줄 수 없는 격이고, 어떻게 해결해야할까? 토큰을 localStorage가 아닌 다른 곳에 담아야 하는 것일까? 


🤔 느낀점

위 에러의 원인을 파악하고 끝내 해결하였지만, SSR방식의 getStaticProps 메소드에서 localStorage에 접근하지 못한다면 이 방법을 사용할 수 없다. private variable를 사용한다고 하더라도 local Storage에서 결국은 가져와야 하는건데. 다음 번에는 getServerSideProps메소드를 이용해서 구현해봐야겠다.

참고 예정

저작자표시 (새창열림)

'개발 일지 > 에러 처리' 카테고리의 다른 글

[에러 처리] Python 모듈이 설치되었음에도 'No module named '~'에러  (0) 2023.05.16
[에러 처리] spawn ./gradlew EACCESS ($npm run android 에러)  (0) 2023.05.12
[에러 처리] React Native 실행 중 'Multiple Podfiles were found' 에러  (0) 2023.05.11
[에러 처리] "The operation was rejected by your operating system"  (0) 2023.04.15
  1. 😡 에러 상황
  2. 🧐 대응한 방법
  3. 👏 해결 방법
  4. 🤔 느낀점
'개발 일지/에러 처리' 카테고리의 다른 글
  • [에러 처리] Python 모듈이 설치되었음에도 'No module named '~'에러
  • [에러 처리] spawn ./gradlew EACCESS ($npm run android 에러)
  • [에러 처리] React Native 실행 중 'Multiple Podfiles were found' 에러
  • [에러 처리] "The operation was rejected by your operating system"
피터s
피터s
1년차 프론트엔드 개발자입니다 😣 아직 열심히 배우는 중이에요! 리액트를 하고있어요 :) - gueit214@naver.com - https://github.com/gueit214
피터의 성장기록1년차 프론트엔드 개발자입니다 😣 아직 열심히 배우는 중이에요! 리액트를 하고있어요 :) - gueit214@naver.com - https://github.com/gueit214
피터s
피터의 성장기록
피터s
전체
오늘
어제
  • 분류 전체보기 (200)
    • 코딩 테스트 (25)
      • 프로그래머스 (16)
      • LeetCode (8)
      • 백준 (1)
    • 개발 독서 일지 (1)
    • 기업 분석 (4)
    • 개발 일지 (19)
      • 최신기술 도전기 (1)
      • 에러 처리 (5)
      • 개발 일지 (12)
    • 개발 일상 (36)
      • 개발 회고 (22)
      • 개발 이야기 (12)
      • 개발 서적 (1)
    • 취업 관련 지식 (11)
    • 알고리즘 (17)
    • WebProgramming (84)
      • WebProgramming (8)
      • HTML (5)
      • CSS (8)
      • JS (21)
      • React (40)

블로그 메뉴

  • About
  • 2022년 개발 성장기
  • 앞으로의 계획
  • github
  • 일상 blog

공지사항

인기 글

태그

  • KAKAO BLIND
  • 개발 회고
  • 개발 일상
  • 누적합
  • 카카오 채용연계형 인턴십
  • LV2
  • 카카오
  • Union-find
  • BFS
  • 개발 is life
  • lv3
  • 스터디 후기
  • 1년 회고
  • 구름톤
  • 반복문
  • Kakao Tech Internship
  • 함수
  • 1일 1커밋 후기
  • 해커톤
  • dfs
  • Retry
  • 구름

최근 댓글

최근 글

hELLO · Designed By 정상우.
피터s
[에러 해결] getStaticProps메소드 사용 중 발생 "This error happened while generating the page. Any console logs will be displayed in the terminal window."
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.