먼저 환경 변수란?
일반적으로 우리는 코드베이스를 하나만 관리하고, 로컬이 아닌 개발, 운영, 테스트 등 여러 환경에서 애플리케이션을 배포합니다. 어느 환경에서 애플리케이션을 배포하는지에 따라 다르게 값들을 설정해야 하는 항목들은 보통 운영 체제 레벨에서 환경변수를 통해 관리됩니다.
즉 "환경 변수"라는 이름에서 알 수 있듯이 일종의 변수이며, 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이라고 할 수 있습니다.
대표적으로 API KEY나 데이터베이스(DB) 설정과 같이 민감한 정보들을 공개된 장소에 올리면 상당히 위험하기 때문에 민감한 정보나 공개되지 않아야 하는 정보들을 환경 변수로 저장해 놓고 사용하는 것이 일반적입니다.
더불어 로컬에서 환경변수로 API Key나 DB정보를 바꾸고 정상적으로 돌아가는지 확인을 하고 운영서버로 COMMIT 하기 전에 환경변수로 빼놔야 하는 것을 까먹거나,. gitignore에 깜빡하고 포함하지 않을 가능성 또한 존재하기 때문입니다.
- API Key, DB 정보 등 민감한 정보를
소스 코드에 직접 입력하지 않습니다. - 개발, 테스트, 배포 등 다양한 환경에서 각각 다른 설정 값을 적용합니다.
- 설정값들을 한 곳에 모아서 편리하게 관리합니다.
환경변수의 필요성을 정리해 보면 위와 같습니다.
dotenv 설치
npm i dotenv
로컬환경에서 터미널에 위와 같이 입력을 하면 간단하게 dotenv를 설치하실 수 있습니다.
. env 설정
dotenv 라이브러리는 아무 설정을 하지 않으면 현재 디렉터리에 위치한 dotenv 파일로부터 환경변수를 읽어옵니다.
그렇기 때문에 프로젝트에. env라는 파일을 만들어줘야 합니다.
✅ config() : dotenv 라이브러리의 config() 함수를 사용하여 .env파일의 내용을 읽어옵니다.
위 코드를 보면 간단하게 express 모듈을 이용한 서버 접속 코드입니다.
6번째 줄에서 process.env.PORT를 볼 수 있는데 이 코드는. env파일에서 PORT라는 KEY를 불러오겠다는 뜻입니다.
그림 1#
그런데 그림 1#을 보면 .env파일의 내용을 보면 아무것도 설정해주지 않았기 때문에 서버 접속이 불가능합니다.
. env 파일에 PORT를 3000으로 설정해 준다면 process.env.PORT로. env 파일의 PORT를 가져와서 설정해 주기 때문에 정상적으로 접속이 가능합니다.
다른 파일에 환경 변수 저장하기
만약에. env 파일이 아닌. env.local라는 파일에 포트를 저장을 한다면 config() 함수에 path라는 옵션을 추가하여 경로를 설정해 줄 수 있습니다.
프로그램 실행 할 때 환경변수 실행
dotevn 패키지를 파일로 불러오지 않고 커맨드로 프로그램을 실행하면서 환경변수를 가져올 수 도 있습니다.
node -r dotenv/config 파일명
node -- dotenv/config 파일명
그런데 다른 파일에 환경 변수를 저장했다면 아래와 같이 사용할 수 있습니다.
DOTENV_CONFIG_PATH = .env.local node 파일명
'Framework > Node.js' 카테고리의 다른 글
[Node.js-Express] 라우터 (Router) 알아보기 (0) | 2024.04.19 |
---|---|
[Node.js] Middleware & 익스프레스 express 프레임워크 알아보기 (0) | 2024.04.17 |
[Node.js] process.env 알아보기 (0) | 2024.04.07 |
[Node.js] 동기 & 비동기 / Non-blocking & blocking (0) | 2024.03.30 |