[React-native] expo는 오류 없는 프로젝트를 보장하라

seoleem Lee·2024년 9월 24일
post-thumbnail

개요

여느 때와 다름 없이 평화롭게 프로젝트를 실행했다.

근데…? 못 보던 오류가 뜨는 것이다…

TypeError: Invalid character in header content ["X-React-Native-Project-Root"]
at ServerResponse.setHeader

할 수만 있다면 이때로 돌아가고 싶다

지금 보니 이 오류는 단순이 상위 폴더가 한국어로 선언되어 있어서 난 오류였다…

그것도 모르고 난…

아무튼 이것저것 시도해보던 나는 난생 처음 보는 오류를 만나게 된다.

Error: Cannot find module 'metro/src/lib/TerminalReporte

지옥의 시작

지옥 빵빠레 불며 시작

그때의 나는 몰랐다

이 오류 하나만으로 몇 시간 동안 눈물을 흘리며 고생하게 될 것이라는 것을…


삽질의 시작 1

일단 차분하게 gpt 신이 시키는 대로 모듈을 설치했다

그랬더니

Error: Cannot find module 'metro-core' Require stack:

“응 아니야 새로운 Matro 오류”

와 이게 뭐죠~~~?

누가 이기나 해보자는 마음으로 모든 오류가 사라질 때까지 무한 모듈 설치를 시작했다…

제발멈춰

...
...
...

계속 설치하면서 나는 깨달았다

바로

X됐다

…는 것을

설치하면 할 수록 돌이킬 수 없는 곳으로 가고 있었다.

안되겠다.

이대론 진짜 돌이킬 수 없을 거 같아서 구글링을 시작했다


삽질의 시작 2

그 어떤 것도 나의 상황에 도움이 되지 않는다

이 망할롬의 expo는 뭔 오류가 그렇게 많이 나는건지

나 말고도 너무 많은 사례의 오류가 있었다.

그 중엔 유사한 사례도 많았으나…

글쎄, 딱히 도움이 되진 않았다.

주로 window와 android 사이에서 expo를 사용하는 개발자가 이런 오류를 많이 겪는 듯 했다.

Mac만 선호하는 나쁜 것들

그러다 어떠한 글을 발견하고

하나하나 실행해보던 나는

결국

내 폰에서 내 프로젝트를 다시 상봉할 수 있게 되었다!!!

하…눈물겨운 싸움이었다…


서치하면서 찾아본 몇 가지 방법이 있다.

같은 오류를 겪은 사람은 부디 이 방법들로 해결할 수 있길 바란다.

(키워드만 작성했으니 자세한 해결 법은 구글링 추천)

1. —tunnel 로 연결하기

가장 단순하고 기본적인 방법이다.

주로 노트북과 스마트폰이 다른 와이파이로 연결된 경우 발생한 오류라면 해결할 수 있다.

2. adb reverse tcp:8081 tcp:8081

RN에서는 8081 포트를 사용하는데, 가끔 오류가 발생(하거나 뭐 usb로 연결하거나….등 다양한 이유가 있겠다)한다고 한다.

이때, 해당 내용을 터미널에 입력하여 올바른 포트에 라우팅 하게 되면, 해결될 수도 있다.

(난아니었지만)

3. nvm을 사용하여 node 버전 낮추기

개발자라면 당연히 새로운 버전을 설치하는 것이 국룰이다.

그러나 본인이 현재 실행하고 있는 프로젝트 내 모듈들이 커져버린 node를 받아들이지 못하고 오류나는 경우가 발생하기도 한다,

TypeError: Cannot read properties of undefined (reading 'transformFile')

주로 이런 오류 (내가겪은오류중하나다…)

그럼 nvm (https://github.com/coreybutler/nvm-windows/releases) 이라는 노드 버전을 변경할 수 있도록 도와주는 요 녀석을 설치하자.

이 녀석을 통해 다양한 버전의 노드를 설치하고 맞는 버전으로 변경하면 해결할 수도 있다

(근데 나는 버전 낮추기 싫어서 다른 짓 하다가 더 큰 오류 났다.)

4. 최후의 yarn

나는 이 방법으로 해결하였다.

결국 이상한 짓을 반복한 끝에 다음과 같은 오류를 맞이하게 된다
ConfigError: Cannot determine which native SDK version your project uses because the module expo is not installed. Please install it with yarn add expo and try again.

왜없어진건데미친

같은 사례를 가진 사람들을 찾아보고 다음 글을 발견하게 된다.

Cannot determine which native SDK version your project uses because the module expo is not installed

저는 yarn을 설치한 다음 "yarn add expo" 명령을 실행했습니다.

오옷?

그러고보니 최근 작업 때 yarn…어쩌구를 설치했던 거 같기도 하고…?

어쩌면 그때 yarn과 npm이 충돌하게 된 거 같다…

1) 기존에 설치된 npm을 제거한다

npm uninstall -g expo-cli

  • 애초에 현재 expo는 글로벌로 관리하지 않는다고 한다. 처음 시작할 땐 npx expo start 하면 설치가 진행되니 알아두자

2) yarn install 으로 yarn을 설치한다

3) yarn start로 프로젝트를 실행한다.

yarn으로 변경 시 프로젝트 생성은 yarn create expo 프로젝트 이름 --template 으로 해야하는 듯 하다.

이럴수가.

이렇게 하니 어찌저찌 해결되었다.

조금 찝찝한 해결이긴 하지만…

해결했잖아 한 잔 해~

profile
한 줄의 코드로 세상을 변화 시키고 싶은 개발자 이서림 입니다.

0개의 댓글