문제점
현재 앱 개발을 위해서 react-native 를 학습하고 있는데, 조금 더 빠른 개발환경 구축을 위해 expo 를 선택했다.
서버는 일단 appwrite를 이용해서 만들었는데, config를 추가하는 와중에 평소 react 를 개발하던것처럼 REACT_APP
.env에 환경변수를 작성하고 아무생각없이 process.env 로 불러왔다. (당연 작동안함 ...ㅎㅎ)
export const appwriteConfig = {
endpoint: process.env.REACT_APP_END_POINT,
platform: process.env.REACT_APP_PLATFORM,
projectId: process.env.REACT_APP_PROJECT_ID,
databaseId: process.env.REACT_APP_DATABASE_ID,
userCollectionId: process.env.REACT_APP_USER_COLLECTION_ID,
videoCollectionId: process.env.REACT_APP_VIDEO_COLLECTION_ID,
storageId: process.env.REACT_APP_STORAGE_ID,
};
시도해본것
1. react-native-dotenv 라이브러리 사용
npm install react-native-dotenv
라이브러리를 설치한 후에 , balbel.config.js의 플러그인에 다음과 같이 추가해준다.
module.exports = function (api) {
api.cache(true);
return {
presets: [
["babel-preset-expo", { jsxImportSource: "nativewind" }],
"nativewind/babel",
],
plugins: [
[
"module:react-native-dotenv",
{
moduleName: "@env",
path: ".env",
safe: false,
allowUndefined: true,
},
],
],
};
};
이후, 다음과 같이 import 해주면 환경변수를 사용할 수 있게 된다.
import {
REACT_APP_END_POINT,
REACT_APP_PLATFORM,
REACT_APP_PROJECT_ID,
REACT_APP_DATABASE_ID,
REACT_APP_USER_COLLECTION_ID,
REACT_APP_VIDEO_COLLECTION_ID,
REACT_APP_STORAGE_ID,
} from "@env";
export const appwriteConfig = {
endpoint: REACT_APP_END_POINT,
platform: REACT_APP_PLATFORM,
projectId: REACT_APP_PROJECT_ID,
databaseId: REACT_APP_DATABASE_ID,
userCollectionId: REACT_APP_USER_COLLECTION_ID,
videoCollectionId: REACT_APP_VIDEO_COLLECTION_ID,
storageId: REACT_APP_STORAGE_ID,
};
잘 작동하긴 하나, expo 에서 환경변수를 사용하려면 무조건 라이브러리를 설치해야한다는건 좀 아닌것 같아서 보다 정석적인 방식을 찾아보기로했다.
해결방안
https://docs.expo.dev/guides/environment-variables/
react-native-expo 에서 제공하는 환경변수 셋팅 방법이다.
REACT_APP 으로 시작할게 아니라 이름을 EXPO_PUBLIC 으로 시작하라고 안내하고 있다.
이 방식 이후에, env 안에 이름을 싹 변경하고 다시 config 에 적용하니 에러 하나 없이 잘 나온다! 아주 굿.
알게된 것
무조건 공식문서 잘 찾아보기, 다양한 방식이 있을 수 있으니 여러가지 해보기. 라이브러리를 사용해서 잘 된다고 하더라도 정석적이고 효율적인 방식을 찾아보기
'TIL' 카테고리의 다른 글
TIL 24.12.13 input components props type 지정 (0) | 2024.12.13 |
---|---|
TIL 24.12.09 git stash 로 현재 작업 내역 임시 저장 및 브랜치 이동하기 (0) | 2024.12.09 |
TIL 24.11.29 React svg component 불러오기 (0) | 2024.12.02 |
TIL 24.11.14 Prisma 전역 객체 선언 및 타입 지정 (0) | 2024.11.14 |
TIL 24.11.11 React.Children.map() 함수 (0) | 2024.11.11 |