• 티스토리 홈
  • 프로필사진
    루루개발자
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
루루개발자
  • 프로필사진
    루루개발자
    • 분류 전체보기 (212)
      • react & next.js (12)
      • Node.js & Javascript & Type.. (24)
        • d3.js (10)
      • 차트 만들기 (1)
      • 티스토리 스킨 개발 (7)
      • 내가 만든 패키지 (3)
      • 내가 만든 CSS (1)
      • CSS (7)
      • 도커 & 쿠버네티스 (3)
      • 개인 프로젝트 (7)
      • 리뷰 & 추천 (2)
      • 알고리즘 (1)
      • IT 기타 (18)
      • 잡동사니 (1)
      • Spring Boot (5)
      • 취미로 그리는 그림들 (120)
      • 개인적인 생각들 (0)
  • 반응형
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Next.js 가 실행될 때 한번만 특정 로직을 실행하는 방법
        2023년 10월 17일
        • 루루개발자
        • 작성자
        • 2023.10.17.:02
        반응형

        Next.js 를 실행할 때 마다 최초 한번 특정 로직을 실행해야 하는 경우가 있었습니다. 구동할 때 마다 최초 한번이라는 말은 즉, 코드가 수정되어 git merge 된 이유를 포함한 여러가지 이유로 인해 애플리케이션을 재기동 할 때를 말합니다. 해당 부분을 Next.js 에서 처리하는게 가능할까? 라는 생각과 함께 Next.js 문서를 읽어보던 도중에 Next.js 에서 제공하는 기능 중 하나인 Instrumentation 을 발견하였습니다.

         

        Instrumentation 이 무엇인가?

        Next.js 레포지토리의 루트 경로 또는 src 폴더 사용시에는 src 경로에 instrumentation.ts 라는 파일을 생성 후 이 파일 안에서 register 라는 함수를 export 해놓으면 Next.js 가 실행(부트)될 때 마다 해당 register 함수를 한번 호출하는 기능이라고 볼 수 있습니다. 하지만 현재 2023-10-17 기준으로 instrumentation 기능은 아직 실험적 기능이며, 아래 링크와 같이 Next.js 를 standalone 모드로 구동하면 register 함수가 호출 되지 않는 이슈가 있습니다. (최초 한번 요청이 들어와야 register 함수가 한번 호출 됩니다.)

        https://github.com/vercel/next.js/issues/49897

         

        Instrumentation hook is not called in `standalone` output · Issue #49897 · vercel/next.js

        Verify canary release I verified that the issue exists in the latest Next.js canary release Provide environment information Operating System: Platform: darwin Arch: x64 Version: Darwin Kernel Versi...

        github.com

        해당 이슈가 해결 되면 본 게시글도 내용 업데이트 할 예정입니다.

         

        Instrumentation 사용 방법

        1) Next.js 레포지토리의 루트 경로 또는 src 폴더 사용시에는 src 경로에 instrumentation.ts 라는 파일을 생성

        • src 디렉토리 이용할 경우 : 프로젝트 경로/src/instrumentation.ts
        • src 디렉토리 이용하지 않을 경우 : 프로젝트 경로/instrumentation.ts

        2) instrumentation.ts 파일 내용을 아래와 같이 작성

        export function register() {
          // 부트 될 때 마다 최초 한번 실행되어야 할 로직을 작성하세요.
        }

        그럼 이제 Next.js 가 실행(부트)될 때마다 register 함수가 한 번 호출될 것입니다. (원래라면 이렇지만 위에서 언급했듯이 2023-10-17 기준으로 현재는 최초 한번 요청이 들어와야 register 함수가 호출됩니다.)

         

         

        이상입니다.

        감사합니다. :)

         

        반응형

        'react & next.js' 카테고리의 다른 글

        React 의 RSC, RCC 에 대하여 (with Next.js)  (1) 2023.10.18
        Next.js 에서 종속성 패키지에 browserslist 적용하는 방법  (4) 2023.10.18
        useEffect 에 대해 알아봅시다  (0) 2023.07.25
        useState 에 대해 알아봅시다  (0) 2023.07.24
        Next.js 의 렌더링 과정에 대하여  (0) 2022.11.09
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바