본문 바로가기
TROUBLE SHOOTING

[REACT] dotenv로 비밀 키 숨기기

by 뭉망뭉 2022. 3. 4.

dotenv는 API 키를 사용하거나 할 때 깃허브에 업로드하면 안 되는 것들을 숨겨놓는 역할을 한다. 

npm install dotenv

설치하고

REACT_APP_GOOGLE_MAP_API = 숨길키

폴더 구조 최상위(.gitignore, package.json이랑 같은 위치)에 .env 파일을 만들고 .gitignore에 .env를 써준 다음에

.env 파일 안에 저렇게 숨길 내용을 넣어주면 된다. 

리액트에서는 REACT_APP_으로 prefix를 해줘야 정상적으로 읽는다.

 

const mapKey = process.env.REACT_APP_GOOGLE_MAP_API;

이런 식으로 사용하면 된다. 

 

create-react-app으로 만든 리액트 프로젝트에는 이미 dotenv 패키지가 내장되었기에 많은 블로그에서 나오는 

import dotenv from "dotenv";
dotenv.config();
// require("dotenv").config();

저 둘 중 하나로 불러오는 코드가 필요가 없다. import 넣어서 줄줄이 에러 나와서 삽질 좀 했다

더보기

Compiled with problems:X

ERROR in ./node_modules/dotenv/lib/main.js 1:11-24

Module not found: Error: Can't resolve 'fs' in 'C:\폴더구조\node_modules\dotenv\lib'


ERROR in ./node_modules/dotenv/lib/main.js 3:13-28

Module not found: Error: Can't resolve 'path' in 'C:\폴더구조\node_modules\dotenv\lib' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }' - install 'path-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "path": false }


ERROR in ./node_modules/dotenv/lib/main.js 5:11-24

Module not found: Error: Can't resolve 'os' in 'C:\폴더구조\node_modules\dotenv\lib' BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "os": require.resolve("os-browserify/browser") }' - install 'os-browserify' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "os": false }
 
 
이 오류 만난 거면 import문을 넣어서 생긴 문제다.
아래 링크 블로그에서 잘 설명해놓았다.
 

[React] Webpack으로 구축한 React 프로젝트에서 환경 변수(.env) 사용하기

TL;DR Webpack을 통해 직접 구성한 리액트 프로젝트 .env 파일에 환경 변수를 선언할 때 REACT_APP_ 으로 시작하지 않아도 됨 dotenv 패키지: DefinePlugin 을 통해 수동으로 전역 변수 정의 dotenv-webpack 패키..

db2dev.tistory.com

 

 

그리고 이 글을 쓴 목적은

💡⭐🌟dotenv는 서버를 껐다 켜야 반영이 된다!🌟⭐💡

콘솔 찍어봐도 undifined 떠서 계속 디버깅했는데 사실 서버 재시작을 안 해서 생긴 문제였다는 점!

 

 

'TROUBLE SHOOTING' 카테고리의 다른 글

[GITHUB] 깃허브에 Daily Commit 스타일 핀하기  (0) 2022.02.25

댓글