[React Native Expo] Expo Go와 prebuild 기능(써드파티라이브러리) 분리하기

JS/React Native Expo · 2024. 1. 26. 13:47
728x90

expo prebuild로 써드파티라이브러리를 갖다 쓰다보면 expo go에서는 기능하지 않는 라이브러리들이 있다

그래서 prebuild로 작업하다가 expo go로 바로바로 디바이스에서 띄우면서 작업하고싶을때 써드파티 라이브러리때문에

expo go에서는 오류가 나는데 그럴땐 expo go와 prebuild를 분리해서 스크립트를 짤 수 있다.

 

npx expo install expo-constants

보통 router 설치시에 같이 설치되기는 하는데 만약 없다면 설치

 

import Constants, { ExecutionEnvironment } from "expo-constants";

const App = () => {
  const isExpoGo = Constants.executionEnvironment === ExecutionEnvironment.StoreClient;
  useEffect(() => {
    if (!isExpoGo) {
      onFetchUpdateAsync();
    }
  }, []);
}

이런식으로 특정 함수를 ExpoGo가 아닐때(build시)만 작용시키게 해줄 수 있다.

그럼 여기서 ㅇㅇ스크립트는 알겠고 라이브러리 호출하는거에서부터 오류 뜨는데 어떡하지싶을거다

내가 그랬다 특정 라이브러리를 import하는거부터가 expo go에서 오류가 났다..

그래서 import 분리는 이렇게 하면된다

const isExpoGo =
  Constants.executionEnvironment === ExecutionEnvironment.StoreClient;

let OneSignal: any;
if (!isExpoGo) {
  OneSignal = require("react-native-onesignal").OneSignal;
} else {
  OneSignal = View;
}

onesignal이라는 푸시알림 서비스는 prebuild버전에서만 지원이 됐기에 expo go에서는 오류가 났다

그래서 저렇게 분리해서 호출하면 expo go에서는 onesignal 기능이 작동되지않고 prebuild에서만 작동하므로 오류가 안난다

 

728x90
Copyright © Nana
levup