Next.js에서 FSD 네이밍 적용 시 발생하는 build 문제?!

Next.js에서 Feature Sliced Design(FSD)을 적용할 때 폴더 구조에 어려움이 있었습니다. FSD의 레이어 중 하나인 pages 폴더 이름을 사용해야 하는데, Next.js에서도 pages 폴더 이름을 사용하고 있기 때문이에요. (Next.js는 내부적으로 pages 폴더 하위의 파일 이름을 엔드포인트로 라우팅을 구현함)


이 문제를 해결하기 위해 FSD 공식 홈페이지에서는 최상위에 app 폴더를 만들어 Next.js의 app routing을 사용하고, src/pages 폴더를 만들어 FSD의 pages 네이밍 컨벤션을 지키도록 권장하고 있어요. 이렇게 하면 FSD와 Next.js의 네이밍 컨벤션을 모두 지킬 수 있어요.

하지만 또 다른 진짜 문제가 생겼습니다. 클라이언트 컴포넌트에서 서버 액션을 사용하는 경우, next build를 하면 아래와 같은 에러가 발생했어요.


./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js

Module not found: Can't resolve 'react-server-dom-webpack/client'


추측컨대, Next.js pages 라우터에서는 src/pages 하위의 파일을 모두 클라이언트 컴포넌트로 취급하기에, 'use server' 실행 위치 때문에 발생하는 문제가 아닌가 싶어요. 폴더 이름을 src/pages에서 src/views로 변경했더니 빌드가 성공했어요. 또한 'use server'를 삭제해도 빌드가 성공했습니다.


FSD와 Next.js app router를 함께 사용하시는 분들은 참고하시면 도움이 될 것 같아요!
위 에러의 정확한 원인을 아시는 분이 계시다면 설명해주시면 큰 도움이 될 것 같습니다. 😊

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 6월 5일 오후 12:41

 • 

저장 7조회 1,420

댓글 0

    함께 읽은 게시물

    커리어를 쌓아야 할 때 알아야 하는 잔인한 사실들

    1

    ... 더 보기

     • 

    저장 38 • 조회 1,525


    👋 굿바이 Styled Components 🥹

    S

    ... 더 보기

    Thank you - styled-components

    opencollective.com

    Thank you - styled-components

     • 

    댓글 1 • 저장 34 • 조회 2,957


    가장 훌륭한 경비절감 방법은 ‘몰입’이다. 가장 훌륭한 생산성 향상 방법도 ‘몰입’이다. 이는 많은 경영학자들이 연구를 통해 증명한 사실이다.

    ... 더 보기

    [백진기 칼럼]그래 한번 미쳐보자?(110편)

    메디칼타임즈

    [백진기 칼럼]그래 한번 미쳐보자?(110편)

    사이드 프로젝트 34개를 만들고 느낀점 10가지

    1️⃣ 아이디어의 가치는 실행했을 때 비로소 생긴다.

    ... 더 보기

     • 

    댓글 1 • 저장 132 • 조회 5,227



    요즘 우아한 AI 개발 출간~

    ... 더 보기

    “요즘 우아한 AI 개발” 출간!

    meta-bifrost.vercel.app

    “요즘 우아한 AI 개발” 출간!

     • 

    저장 28 • 조회 5,046