React Native(expo) 빌드 실패 문제 해결: Node.js 버전 충돌 (문제 해결)

Devinix·2024년 9월 5일
0

[문제 해결]

목록 보기
27/29

개요

현재 프리랜서로 외주를 받고있는 스타트업의 플랫폼(웹 서비스)을 웹뷰 앱으로 패키징 해달라는 요청을 받아 React Native (expo) 프로젝트를 초기화하고, 안드로이드 에뮬레이터를 실행시키려고 하던 도중이었다.

문제 상황

안드로이드 빌드를 하려던 도중, 에러 메세지가 발생했다.
로그는 아래와 같다.

해석해보니 React Native는 Node.Js 18 버전 이상을 요구하는데, 현재 나의 버전은 16.20.2라고 한다.

하지만 node -v 명령어를 통해 나의 Node.js 버전을 확인해본 결과 20.17.0 버전을 사용하고 있는걸 확인 할 수 있었다.

원인

문제의 원인은 nvm(Node Version Manager)을 통해 여러 버전의 Node.js가 설치된 환경에서 발생했다. nvm ls 명령어를 통해 확인한 결과, 시스템에는 두가지 버전의 Node.js가 설치되어 있었던 것이 원인이었다.

nvm ls
       v16.20.2
->     v20.17.0
         system
default -> 20 (-> v20.17.0)
...

Node.js 20.17.0이 기본 버전으로 설정되어 있었지만, 이 웹뷰 프로젝트에서 여전히 Node.js 16.20.2 버전을 참조하고 있었다. 이는 본 프로젝트나 빌드 스크립트에서 잘못된 Node.js 버전을 참조하고 있었기 때문으로 추정이 된다.

해결 과정

해결과정은 매우 간단했다. 불필요한 Node.js 버전(16 버전)을 삭제하는 것으로 안드로이드 에뮬레이터를 정상 동작 시킬 수 있었다.

nvm uninstall 16.20.2

Node.js 버전 문제가 해결된 후에도 빌드 캐시에 남아 있는 설정이 문제를 일으킬 수 있다고 생각하여, Gradle 빌드 캐시도 정리해 주었다.

cd android
./gradlew clean

짠!

결론

이번 이슈는 nvm을 통한 다중 Node.js 버전 관리에서 발생한 Node.js 버전 충돌이 원인이었다. 프로젝트에서 특정 Node.js 버전을 참조하고 있었고, 이를 해결하기 위해 불필요한 버전을 삭제하고 빌드 캐시를 정리하는 과정을 통해 간단하게 문제를 해결할 수 있었다.

프로젝트마다 사용되는 Node.js 버전이 다를 수 있기 때문에 nvm과 같은 버전 관리 도구를 사용할 때는 불필요한 버전이 남아 있지 않도록 관리하는 것이 중요하다고 생각하게 되었다.

참고한 글

(expo 공식문서)
https://expo.dev/changelog/2023/11-03-node-default

profile
프론트엔드 개발

0개의 댓글