회사에서 본격적인 배포 전 ubuntu 머신을 받아 임의의 Ubuntu 환경에서 웹 프로젝트를 실행하려다, 너무 사소하지만 한참을 헤맸던 이슈가 있어 공유해보려 합니다.
오류 메시지에서 전혀 알 수 없었기 때문에 저처럼 pnpm 기반의 프로젝트를 다루고 있는데, Ubuntu 로컬 머신이나 EC2 서버에서 실행이 안 된다면, 참고해보시면 좋을 것 같습니다.
ubuntu 기반의 로컬 머신에서 서버와 클라이언트 코드를 띄우려고 하였지만,
pnpm 패키지 매니저를 사용하여 프로젝트를 구성한 client
와 robot
레포지토리 코드가 실행되지 않는 문제가 발생했습니다.
다만 pnpm
을 사용하지 않는 server
레포지토리에서는 문제 없이 서버가 실행되었습니다.
node
와 npm
, pnpm
등을 모두 제거하고 다시 설치해보아도, sudo apt-get install
, sudo apt-get upgrade
등의 명령어를 실행해보아도 반복해서 문제가 발생하였고, 너무 간단한 문제였지만 꽤 오랫동안 문제의 원인을 찾지 못해 헤매었기에 간단하게 공유해봅니다.
앞으로 웹에서 pnpm을 사용하여 세팅한 프로젝트가 많아질텐데, 웹개발자에게는 익숙하지 않은 ubuntu에서 서버를 띄우느라 바로 오류의 원인을 찾지 못했고, (구글링 해도 해결 방안을 찾기 어려웠습니다) 기록해두면 좋을 것 같아 작성하였습니다!
ec2를 쓸 때 이 문제를 겪어본 적이 있었지만, 버전 문제라는 생각이 떠오르지 않아 한참을 헤맸습니다. 앞으로 ubuntu를 쓸 일이 많을 것 같아 작성하였습니다.
오류가 발생한 부분들을 캡처해보자면 대략 아래와 같습니다.
❌ Error: Cannot find module 'fs/promises'
❌ SyntaxError: Unexpected token '?.'
nodejs
와 npm
이 최신 버전이 아닌 한참 낮은 버전으로 설치되기 때문입니다.
Ubuntu에서는 apt install nodejs
로 설치할 경우 Node.js 12버전대
처럼 매우 낮은 버전이 기본 설치됩니다.
실제로 로컬 PC에서는 node v12.22.9로 설치되어 있었고,
정상적으로 실행되는 제 개발 PC에서는 node v22.13.1이었습니다.
Node 14 이상에서 도입된 문법(fs/promises, optional chaining ?. 등)을 사용한 최신(?) 프로젝트라면, 이런 구버전에서는 아예 실행이 되지 않습니다. 사실상 그냥 거의 모든 플젝이 실행되지 않을 거라는...
sudo apt remove nodejs npm
### 최신 패키지 목록으로 업데이트
sudo apt update
### npm 설치 (혹시 빠진 경우)
sudo apt install npm
### Node 버전 관리 도구 'n' 설치
sudo npm install -g n
### 최신 LTS(Long Term Support) 버전 설치
sudo n lts
### 또는 원하는 버전 지정하여 설치
sudo n 20.11.1 # 예시
설치 후에는 터미널을 재실행해야 적용됩니다.
node -v # → v20.11.1 (예시)
npm -v # → 10.5.0 (예시)
pnpm -v # → 정상 출력됨
이제 pnpm install
, pnpm run dev
가 정상 작동하는 것을 확인할 수 있습니다.
이와 관련하여 이슈 트래킹에 불필요한 시간을 너무 소요해서, 특정 버전 이상이 아니면 적절한 에러를 띄우도록 개선하였습니다. 그와 관련한 내용은 다음 포스팅에 작성해두겠습니다!!