리액트 프로젝트의 UI 수정 작업을 진행하게 되었는데, 프로젝트를 실행하려다 보니 아래와 같은 오류가 발생하고 실행은 되지 않았습니다 🥲
TypeError: Cannot convert undefined or null to object
at Object.<anonymous> (/Users/jinchoi/Desktop/roulette/.yarn/__virtual__/react-scripts-virtual-6f5ee809b4/0/cache/react-scripts-npm-5.0.1-d06bd2d5ad-92afa2f245.zip/node_modules/react-scripts/config/env.js:16:30)
Node.js v23.1.0
어디서 갑자기 이런 오류가 났는지 원인을 찾아보니, 제 PC와 프로젝트가 사용하는 Node.js 버전이 서로 달라 생긴 충돌 때문이었습니다.
그럼 Node.js 버전을 어떻게 그때 그때 관리하지? 하다가 nvm(Node Version Manager) 을 이용하면 간편하게 가능하다는걸 알게 되었습니다. 혹시 다음에 비슷한 상황이 있을때 바로 확인할 수 있게 정리해보았습니다.
brew가 설치되어 있는 상황이면, 아래 명령어로 바로 nvm 설치가 가능합니다.
brew install nvm
만약 brew가 없다면 해당 링크를 따라 설치가 가능합니다. https://brew.sh/ko/
nvm을 설치한 후, 터미널에서 nvm 명령어를 인식할 수 있도록 환경 변수 설정을 추가해줘야 합니다.
사용 중인 쉘 환경에 따라 적절한 설정 파일을 선택하여 터미널에 입력해줍니다.
# zsh은 둘 중 하나로 사용
$ vim ~/.zshenv
$ vim ~/.zprofile
# bash
$ vim ~/.bash_profile
그 다음 프로필 설정을 위해 아래 내용을 작성해야합니다.
입력 방법: 터미널 → i → 아래 내용 작성 → esc → :wq
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh" # This loads nvm
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
작성 후 환경 변수가 적용될 수 있게 source 명령어 입력하여 환경 변수를 적용해줍니다.
zsh은 둘 중 하나로 사용
$ source ~/.zshenv
$ source ~/.zprofile
# bash
$ source ~/.bash_profile
설정이 완료되면, 다음 명령어로 nvm이 정상 설치되었는지 확인이 가능합니다.
nvm -v
0.40.1
이제 설치된 nvm을 통해 프로젝트에 맞는 Node.js 버전을 확인하고 설치할 수 있습니다.
nvm ls
v18.20.4
-> system
default -> 18 (-> v18.20.4)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v18.20.4) (default)
stable -> 18.20 (-> v18.20.4) (default)
lts/* -> lts/jod (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2 (-> N/A)
lts/hydrogen -> v18.20.4
lts/iron -> v20.18.0 (-> N/A)
lts/jod -> v22.11.0 (-> N/A)
nvm ls를 통해 모든 버전을 확인할 수 있고, 저는 18버전을 사용하기 위해 18버전을 설치했습니다.
nvm install 18
설치한 Node.js 버전을 사용하도록 변경합니다.
nvm use 18
Now using node v18.20.4 (npm v10.7.0)
버전을 변경하고 다시 프로젝트를 실행하면 프로젝트가 오류없이 정상적으로 실행되는걸 확인할 수 있습니다.
만약 프로젝트를 실행했는데, node.js 버전으로 인해 실행이 되지 않으면 nvm을 설치해서 버전을 맞춰보는 방법도 있다는걸 하나 배우는 시간이었고, 앞으로는 다양한 Node.js 버전을 필요로 하는 환경에서 유용하게 활용할 수 있을 것 같습니다!!!