inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)

'[5-0] 마커 표시하기' <Marker /> 컴포넌트 사용 시 Error 발생

347

reacNN

작성한 질문수 1

0

 

1. '[4-5] GoogleMap 커스텀 스타일 적용하기' 강의까지 문제 없이 진행 후

'[5-0] 마커 표시하기' 강의로 넘어와서 <Marker />컴포넌트를 넣었을 때 발생한 문제입니다.

 

 

2. 강의를 따라서 MapHomeScreen.tsx 파일 내 Marker 관련 코드를 동일하게 적용.

VScode에서 Error가 발생하지 않아 시뮬레이터를 실행시켰습니다.

 

 

3. 시뮬레이터 실행 시 해당 에러 발생.

(ios, android 모두 동일한 에러가 지속적으로 나타났습니다.)

* <Marker />를 주석처리하면 에러가 나타나지않고, 지도가 잘 나타납니다.



react-native 버전과 react-native-maps 버전 문제 확인,

npm uninstall react-native-maps

npm install react-native-maps --save-exact

npx pod-install ios

등등 여러가지 시도해도 보았습니다.

= 에러가 해결되지 않았습니다.

 

 

 

4. 강사님께서 제공해주시는 깃허브 코드 확인.

https://github.com/InKyoJeong/Matzip/blob/lecture/5-0/front/src/screens/map/MapHomeScreen.tsx

 

제공된 코드 전체를 저의 MapHomeScreen.tsx 파일에 붙여넣기 후 VScode 내 Error없음을 확인.

 

npm start --reset-cache로 다시 시뮬레이터 실행.

 

= 해결안됨

여전히 시뮬레이터에서

TypeError: this.getNativeComponent is not a function (it is undefined)

에러 발생..

 

 

 

5. StackOverFlow검색 및 Google검색 결과..

StackOverFlow에서는 해결사례를 찾을 수 없었습니다.

Google 검색을 통해서도 명확한 해결사례를 찾을 수 없는 상황에서 아래와 같은 사이트에서 제시한 방법을 통해 에러가 더 이상 뜨지 않는 것을 확인하였습니다.

 

출처 : https://github.com/react-native-maps/react-native-maps/issues/4861

 

주석처리.

 

마커가 잘 뜨는 것을 확인.

 

 

6. Error가 해결된 것이 맞지만, 잘 못된 방법인 것 같아 질문드립니다.

 

react-native typescript nestjs react-query zustand

답변 3

0

김종여

저는 babel.config.js에 아래와 같이 추가해서 문제를 해결했습니다.

  overrides: [
    {
      test: fileName => {
        return !fileName.includes('node_modules\\react-native-maps');
      },
      plugins: [
        ['@babel/plugin-transform-class-properties', {loose: true}],
        ['@babel/plugin-transform-private-methods', {loose: true}],
        ['@babel/plugin-transform-private-property-in-object', {loose: true}],
      ],
    },
  ],

0

Kyo

제 깃헙이 아니라 질문자님의 깃헙을 올려주시면 좋을것같습니다.

0

reacNN

네 Github 주소 올려드립니다!!!

https://github.com/BoRamSon/Matzip/blob/Matzip_2/front/src/screens/map/MapHomeScreen.tsx

감사합니다.

0

Kyo

저와 rn 버전과 maps버전은 모두 다르네요. 그런데 github 이슈와 같이 해결하셨고 문제없이 잘 동작한다면, 다른방법을 찾는데에 리소스를 쓰는것 보다는 넘어가도 될것같습니다.

 

0

reacNN

확인 감사합니다.

단순 <Marker/> 표시에서는 getNativeComponent 주석처리로 해결이 되었지만,

onLongPress 를 시뮬레이터에서 시도해보니 바로 다시 발생했습니다.

image.png

 

프로젝트를 처음 설치부터 버전에 유의하며 다시 시도해보는 것이 좋을까요???

 

0

Kyo

그런데 babel plugin들을 직접 넣으신건가요? 넣은 이유가 있나요?

babel/plugin transform private method를 삭제하여 해결했다는 이슈도 있네요.

0

reacNN

  1. 직접 babel 코드들을 넣은 이유를 찾아보니

    image.png

    해당 에러가 발생하여 추가했었습니다.

 

2. /front/babel.config.js 파일도 건드려보고, @babel/plugin-transform 코드들을 주석처리 해보았지만 해결되지 않았었습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. raiactivity님.

지금 겪고 계신 TypeError: this.getNativeComponent is not a function (it is undefined) 에러는 react-native-maps 라이브러리와 관련된 문제로 보입니다. 이와 같은 오류는 주로 라이브러리 버전 충돌이나 호환성 문제로 발생할 수 있습니다. 하지만 기존의 해결 방법이 root cause를 해결하지는 않는 것 같아, 다른 가능한 해결 방법을 제안드리고자 합니다.

관련 질문 및 링크

유사한 문제가 발생했을 때 다른 수강생들께서 제안한 해결책들을 아래 링크들을 통해 확인해 보세요.

  1. react-native-vector-icons 에러 관련 질문 - 지식 공유자 Kyo
  2. 템플릿 리터럴 오류 질문 - 지식 공유자 Kyo

해결 방법

1. 라이브러리 버전 확인 및 업그레이드/다운그레이드

npm 또는 yarn을 통해 react-native-maps와 관련된 라이브러리 버전을 확인하고, 호환성 있는 버전으로 맞춰보는 방법이 있습니다.

npm uninstall react-native-maps
npm install react-native-maps@1.14.0
npx pod-install ios

혹은, 강의 자료에서 사용된 버전으로 맞추어 보세요.

2. MainActivity.java 수정 확인

react-native-maps를 사용하기 위해 다음 코드가 MainActivity.java에 포함되어 있는지 확인해보세요.

import android.os.Bundle;
import com.facebook.react.ReactActivity;

public class MainActivity extends ReactActivity {
  @Override
  protected String getMainComponentName() {
    return "YourAppName";
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(null);
  }
}

3. node_modules 및 빌드 캐시 재설정

라이브러리 호환성 문제 해결을 위해 캐시를 초기화하고, node_modules 폴더를 삭제 후 다시 설치해보세요.

rm -rf node_modules
npm install
npm start --reset-cache

4. 라이브러리 패치

해당 이슈에서 제안된 임시 방편인 getNativeComponent의 주석 처리가 결국엔 올바르지 않은 접근 방법이라 우려가 된다면, 해당 라이브러리의 패치를 직접 작성해 여기서 완전히 해결하도록 하는 방법도 있습니다. 예를 들어:

class MapMarker extends React.Component {
  // getNativeComponent;
  getMapManagerCommand;
  getUIManagerCommand;
  static Animated;
  marker;
}

대신, @patch-package/hermes-engine 등을 활용해 안정적으로 패치할 수 있습니다.

추가적인 해결 방법:

  • react-native 버전과 react 버전 호환성 검사: 현재 사용 중인 react, react-native, react-navigation 등의 호환성 확인.
  • 다른 라이브러리로 대체: 만약 react-native-maps의 지속적인 문제가 발생할 경우, 다른 지도 라이브러리도 고려해보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

react-native-screens 버전 호환 문제

2

153

1

안드로이드 실행 중 Drawer네비게이션과 MapView 성능 문제

0

103

2

해당 강의 부분은 실제 활용하기에 부족해 제가 해결한 방법입니다.

0

96

1

소스코드가 강의 순서랑 다른가요?

0

72

2

현재 Windows에서 VsCode로 작업 중인데 추후에 IOS도 가능하게 하려면

0

115

2

react-native-fast-image는 react 19 버전에서 설치가 안되나요?

0

209

2

SQL Shell의 역할이 무엇인가요?

0

91

1

혹시 해당 강의에서invalidateQueries를 사용한 이유가 있을까요?

0

79

2

빠르게 실행해보고싶습니다.

0

82

1

강의 수강 순서 관련

0

70

1

애뮬레이터 실행 방법

0

99

2

무료 Apple ID로 실기기 테스트 가능한가요?

0

90

2

ios 실기기 연결

0

70

2

npm run ios에러

0

74

1

10월 삭제 예정인 강의는 이유를 알 수 있을까요?

0

101

1

캘린더 개발 후에 navigation 에 대해서 궁금한 점이 있습니다.

0

51

1

안드로이드 위치 권한 이슈 2가지 문의

0

71

1

지도가 보이려면 음.. 작성해주신 스타일과 다르게

0

74

0

제대로 설치한거같은데 안드로이드랑 ios 둘다 앱실행이 안되는것같아요

0

83

3

강의 내용을 보면 전체적으로 function 함수 키워드를 사용하시는데

0

69

2

강의 3-9 에서 useGetRefreshToken 훅 안에 즉시 함수로 처리하는 이유가 궁금합니다!

0

82

2

사내에서 figma.com 업로드 안되나요?

0

96

1

AWS EC2 + RDS 설정

0

85

2

안드로이드 안켜집니다.

0

91

2