firebase : 백엔드를 많이 건드릴 필요 없이 환경을 조성해주는 라이브러리? 호스팅이나 여타 백엔드 기능들을 제공해준다.
리액트 프로젝트 & 웹 세팅만 배웠으니 일단 해당 내용을 토대로 기재해둔다.
순서
- react 프로젝트를 만든다
- firebase 홈페이지 - 시작하기 - 프로젝트 생성
- 플랫폼 선택
- Add firebase SDK 하단에서 npm 사용 체크 후 firebaseConfig의 내용 복사
- apiKey, authDomain 등이 담겨 있음
- 리액트 앱으로 가서 npm i firebase 실행
- src폴더에 firebase.tsx 생성 (혹은 firebase.js)
- firebase.tsx에 복사한 내용 붙여넣기
- export default firebase.initializeApp(firebaseConfig); 입력
- 파이어베이스 모듈 임포트 (9.6.1 기준)
- import firebase from “firebase/compat/app”;
- import “firebase/compat/auth”;
- import “firebase/compat/firestore”;
- import “firebase/compat/storage”;
- index에 가서 firebase를 임포트한다.
github에 key값 올리지 않게 방지하기
- 해당 프로젝트 폴더에
.env
파일을 만든다 .gitignore
에.env
를 기재- .env에 입력
- create-react-app을 사용하는 경우에 환경 변수를 써야 한다면
REACT_APP_
으로 시작해야함. - .env파일은 프로젝트 최상위에 있어야 한다. package.json파일 옆에 있어야 함!!
REACT_APP_API_KEY=키값 REACT_APP_AUTH_DOMAIN=키값 REACT_APP_DATABASE_URL=키값 REACT_APP_PROJECT_ID=키값 REACT_APP_STORAGE_BUCKET=키값 REACT_APP_MESSAGIN_ID=키값 REACT_APP_APP_ID=키값
- create-react-app을 사용하는 경우에 환경 변수를 써야 한다면
- 원래 해당 키 값이 있는 곳 수정
apiKey: process.env.변수 이름, authDomain: process.env.변수 이름, ...
상단의 조치만 가지고는 key가 노출되는것을 완전히 막을 수는 없음
- firebase는 클라이언트로부터 요청을 받아야 하기 때문 : 어플리케이션을 내려받아야한다는 의미. 이 키 값들은 어떤 식으로든 코드로 올라가 있을 수 밖에 없다.
- 어플리케이션 빌드 - react app으로부터 빌드 - react코드를 js로 변환 하는 과정에서 react앱은 키값들을 실제 값으로 바꾸게 됨.
- 어플리케이션을 실행한다는 것 = 키 값들이 들어가야하는 것이며, 해당 값들이 없으면 firebase에 접근할 수 없는것