문제 상황
프로젝트 초기 세팅을 마치고, 팀원들이 저의 개발 환경을 기반으로 작업을 시작하려던 중 아래와 같은 메시지를 받았습니다.


처음 보는 오류라 구글링을 해보니, CommonJS (require
)와 ES Module (import
)의 충돌로 인해 발생하는 문제로, 이를 해결하기 위해 package.json
에 "type": "module"
을 지정해야 한다는 내용을 확인했습니다.
그런데 이미 package.json
에는 type: "module"
이 설정되어 있었습니다.
이상했던 점은 제 로컬에서는 아무 문제 없이 잘 작동했지만, 팀원 두 명 모두 동일한 오류를 겪고 있다는 점이었습니다. 즉, 코드 문제가 아닌, 로컬 환경 차이에서 비롯된 문제일 가능성이 높아졌습니다.
원인 분석
환경 차이를 따져봤을 때 가장 의심스러운 것은 Node.js 버전이었습니다. 각자의 Node 버전을 확인해보니 다음과 같았습니다.
- A팀원: v22.14.0
- B팀원: v20.17.0
- 나: v23.10.0 ✅
결과적으로, Node 23 버전 이상에서만 문제가 발생하지 않았고, 팀원들이 Node를 업그레이드하자 오류가 해결되었습니다.
하지만 Node 20, 22는 보통 안정 버전이라 문제 없이 작동해야 할 텐데, 왜 이럴까 하는 의문이 남았습니다.
React Router + Vite = Node 23 이상?
제가 진행했던 초기 세팅은 React Router + Vite를 기반으로 했습니다. 문서상 최소 요구 Node 버전은 다음과 같았습니다:


- React Router: v20 이상
- Vite: v18, v20, v22+ (v21은 미지원)
정상적으로 동작해야 할 버전이었지만, 실제로 여러 Node 버전에서 테스트해본 결과:
- ✅ v23 이상: 정상 설치 (
npm install
) - ❌ v22 이하: 설치 실패
혹시 저만 이런 문제를 겪고 있는지 찾아보던 중, 다음 이슈를 발견했습니다:
이슈를 살펴보면, Node 23 이상에서만 작동하는 문제가 실제로 존재하고 있으며, 아직 해결되지 않은 상태입니다.
해결 방법은?
- ✅ Node 23 이상으로 업그레이드
- ❌ React Router를 7.1.1 이하로 다운그레이드
저희는 최신 기술 스택을 유지하고자 Node를 업그레이드하는 방향을 선택했습니다.
그런데 팀원 모두가 로컬에 직접 Node를 설치하고, 수시로 버전을 변경하는 것은 번거롭고 비효율적입니다.
이를 위해 활용할 수 있는 것이 바로 NVM입니다.
NVM이란?
NVM(Node Version Manager)은 여러 버전의 Node.js를 손쉽게 설치하고 전환할 수 있게 해주는 도구입니다.
Node.js 버전을 자유롭게 설치하고 전환할 수 있도록 도와주는 CLI 도구입니다.
주요 기능
- 원하는 Node.js 버전을 설치/제거 가능
- 프로젝트마다 다른 Node.js 버전 사용 가능
.nvmrc
파일로 자동 전환 지원
왜 NVM을 써야 할까?
1. 프로젝트마다 다른 Node.js 버전 대응
협업 시 팀원들의 Node 버전이 다르면 의도치 않은 오류가 발생할 수 있습니다. NVM을 사용하면 .nvmrc
파일을 통해 팀원들이 동일한 버전을 사용하도록 강제할 수 있습니다.
2. 업그레이드/다운그레이드가 간편
nvm install
, nvm use
명령어 한 줄로 버전을 전환할 수 있어, 복잡한 설치/삭제 과정 없이 간편합니다.
3. 글로벌 환경 오염 방지
기존 방식대로 설치한 Node는 시스템 전체에 영향을 미치지만, NVM은 로컬 사용자 기준으로 관리됩니다.
NVM 설치 방법
- NVM 설치 (MacOS 기준으로 설명합니다)
터미널에서 아래 명령어를 입력해 NVM을 설치합니다:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
설치가 완료되면, 터미널을 재시작하거나 다음 명령어로 NVM을 활성화합니다:
source ~/.nvm/nvm.sh
정상적으로 설치되었는지 확인하려면:
nvm --version
버전이 출력되면 성공적으로 설치된 것입니다.
- Node.js 버전 설정
이제 프로젝트 루트에서 아래 명령어를 실행해 Node 버전을 설정하면 됩니다.
nvm install # .nvmrc에 명시된 버전(v23.10.0) 설치
nvm use # 해당 버전으로 Node 환경 전환
저희 팀은 Node.js 버전 차이로 인한 문제를 방지하기 위해 .nvmrc
파일을 프로젝트 루트에 추가하고, Node.js의 최신 버전인 v23.10.0
을 명시했습니다.
이 설정을 통해 모든 팀원이 같은 Node 환경에서 개발할 수 있게 되었고, 버전 차이로 인한 예기치 못한 오류도 사전에 방지할 수 있게 되었습니다.
관련 내용은 이 PR을 통해 공유했으며, 팀원들이 쉽게 확인하고 반영할 수 있도록 문서화해두었습니다.
협업을 할 때 사소해 보이는 환경 차이가 예상치 못한 오류를 만들기도 합니다. NVM을 잘 활용하면 이런 문제를 깔끔하게 예방할 수 있으니 꼭 도입해보시길 추천드립니다!