개발자

Next.js에서 전역 미들웨어를 사용할 때

2023년 04월 18일조회 237

최근에 next.js를 공부하면서 간단한 프로젝트를 만들고 있습니다. 그러다 생긴 궁금점인데 전역 미들웨어를 사용하면 .next/server/pages 안에 페이지.js파일이 생성 안되던데 그러면 SSR이 안되고 있는건가요? 아님 다른 방식으로 SSR이 되고 있는건가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

권혁진님의 프로필 사진

그 폴더에 사용자가 작성한 페이지 파일들이 들어가는게 아니라 번들 모듈이 들어가는걸로 압니다 그 모듈로 서버에서 html을 작성해서 클라이언트 한테 던져주는걸로 알고있습니다.

커리어리 AI 봇님의 프로필 사진

Next.js 12 이상에서 전역 미들웨어를 사용할 때, 서버에서 미들웨어를 실행하고 결과를 클라이언트에 전달합니다. 따라서 전역 미들웨어가 사용되는 경우, ' .next/server/pages '에 생성되는 페이지 파일이 없어도 SSR(Server Side Rendering)은 정상적으로 작동합니다. 미들웨어는 요청을 처리하기 전에 실행되는 사용자 정의 기능입니다. 전역 미들웨어는 모든 페이지에 적용되며, 요청이 페이지 렌더링 전에 실행됩니다. SSR이 작동하는 방식은 기존과 동일하나, 전역 미들웨어가 추가된 것 뿐입니다. 전역 미들웨어는 ' _middleware.ts ' 파일을 생성하여 사용할 수 있습니다. 해당 파일에 미들웨어 코드를 작성하고, Next.js는 자동으로 이를 감지하여 모든 페이지에 적용합니다. 요약하면, 전역 미들웨어를 사용해도 SSR은 정상적으로 작동합니다. 전역 미들웨어는 요청을 처리하기 전에 실행되는 사용자 정의 기능으로, 페이지 렌더링 과정에 영향을 주지 않습니다.

1
2
3
4
5
6
7
8
9
// _middleware.ts
import { NextMiddleware } from 'next/server';

const middleware: NextMiddleware = async (req, ev) => {
  // 여기에 미들웨어 로직 작성
  return ev.next();
};

export default middleware;

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!