자바스크립트/리액트

리액트와 환경변수

길용쓰 2024. 4. 30. 16:05

리액트로 만든 웹에선 

보안상의 이유로

host의 로컬 파일에 접근이 불가능하다.

 

로컬파일의 내용을 읽어 api로 전달해주는 백엔드 서버를 node.js로 만들거나

input으로 사용자의 파일을 직접 읽는 등의 우회적인 방법밖에 없다.

 

REACT_APP_NOTION_TOKEN = secret_*******************************************
REACT_APP_NOTION_DATABASE_ID = ********-****-****-****-************

 

대신 환경변수로 간단한 문자열 값 정도는 전달이 가능하다.

파일 이름은 '.env'이고

(ㅁㅁ.env가 아닌 그냥 .env 이다)

 

변수명은 REACT_APP으로 시작해야하며

따옴표나 쉼표, 세미콜론은 쓰지 않는다.

 

git ignore에 추가하여 깃허브에 올라가지 않게하기.

개발/테스트/배포 환경에 각각 사용되도록 지정이 가능하다.

npm start시에는 .env.development

npm run build떈 .env.production

npm test때에는 .env.test가 사용된다

 

const notionToken = process.env.REACT_APP_NOTION_TOKEN
const notionDatabaseID = process.env.REACT_APP_NOTION_DATABASE_ID

마지막으로 해당 환경변수값은

별도의 import 없이

process.env로 사용 가능하다.

 

마지막으로 이러한 환경변수는 빌드시에 소스코드 내부에 컴파일되어 들어간다.

빌드된 코드여도 .env 파일을 외부에서 인식하여

유동적으로 값을 변경하며 사용하는게 목표였는데... 결과적으로 헛수고였다 ㅎ

 

아 그리고 서버 재시작해야 적용된다

 

 

https://velog.io/@rmaomina/react-env

 

React에서 .env 환경변수 사용하기

외부 api에 접근하기 위해 token 등이 필요한 경우, 배포하지 않고 개발환경에만 적용할 수 있도록 환경 변수를 설정해야 한다. .env 파일을 가지고 process.env로 가져오는데, null값이라 나서 헤맸다.

velog.io