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,446

댓글 0

    함께 읽은 게시물

    📣 Interview Coaching 베타 릴리즈!!

    ... 더 보기

    🍜 짜파게티가 왜 거기서 나와?

    ... 더 보기

    예상대로 OpenAI에서 GPT-5를 발표했습니다.

    ... 더 보기

    내가 생각하는 사업아이템 피봇팅의 전형적인 모범사례는 기사의 파크랜드와 같은 경우다. 많은 스타트업이 갖고 있는 판타지스러운 피봇팅도 아니고 거창하고 화려하게 포장된 이야기도 아니다. 피봇팅한다, 덩치키운다 마치 사업을 인스타그래머블처럼 하던 스타트업들이 최근까지도 줄줄이 망한 건 언급하지 않겠다.

    ... 더 보기

    양복 만들던 '파크랜드' 요즘 잘 나가네…8500억 '잭팟'

    n.news.naver.com

    양복 만들던 '파크랜드' 요즘 잘 나가네…8500억 '잭팟'

    < 보여서 걷는 게 아니라, 걷다 보니 길 >

    1

    ... 더 보기

    진짜 1인 개발자 전성시대

    1

    ... 더 보기

    진짜 1인 개발자 전성시대

    K리그 프로그래머

    진짜 1인 개발자 전성시대