본문 바로가기

Dev/[Node.js]

[node.js - npm] dotenv - [환경변수 설정]

반응형

 

INTRO


 

node.js express서버 구축 과정에서 

환경변수 설정을 위한 .env 파일 설정하는 방법에 대해 알아본다.

 

 


 

환경변수란?

우선 환경 변수란 어떠한 프로세스가 실행될 때 영향을 미치는 동적인 값이라고 정의되어 있네요.

"환경 변수(環境 變數, 영어: environment variable)는 프로세스 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다."

[출처 - 위키백과]

 

정의는 이렇구요, 우리가 직접 사용하는 입장에서는 아래와 같이 이해하면 되겠네요

1. OS단에 선언되어있는

2. 각기 다른 배포 환경에 따라 같은 변수명을 참조해도 다른 값들을 받아오게 하기 위한 변수

 

예를 들어, 개발 환경에서는 Local에 있는 DB의 주소(localhost:3306) 를 사용하여 개발하는 반면,

운영 환경에서는 원격 서버에 있는 주소(172.11.11.11:10000) 를 사용해야 하는 경우를 생각해봅니다.

 

이 경우에는 아래와 같이 NODE_ENV라는 환경 변수를 등록하고,

해당 값이 development냐, production이냐 에 따라서 값을 다르게 사용하는 방법이 있습니다.

 

DB 주소를 참조하는 곳에서는 아래와 같은 코드를 작성하면 되겠네요.

if (process.env.NODE_ENV == 'production') {
  url = mysql://root:new1234@localhost:3306/aaa;
}
else if (process.env.NODE_ENV == 'development') {
  url = mysql://root:new12345@172.11.11.11:10000/aaa;
}

이렇게 하면 1개의 프로젝트임에도 불구하고, Local 이냐 운영Server냐에 따라 url을 다르게 넣어줄 수 있습니다.

 

이제 이 NODE_ENV라는 변수를 어떻게 설정하는지에 대해 3가지 방법으로 알아볼것입니다.

 

원시적인 방법 부터 소스코드단에서 관리하는 방법까지 차근차근 살펴봅시다.


 

원시적인 방법

1. PC->속성->고급 시스템 설정 진입

 

2. 환경 변수 진입

 

 

3. 직접 환경 변수 삽입

 

 

이렇게 하면 NODE_ENV의 값은 'production' 이 됩니다.

개발하는 곳에서는 NODE_ENV의 값을 'development'로 바꾸면 되겠죠.

 

흔히 저희가 이클립스같은 IDE설치할 때 많이 보는 방법이네요.

잘 설정 되었는지 node 명령어를 통해 알아봅니다.

 


 

 

 

cmd에서 수행하는 방법

1. (VS Code Terminal-CMD 에 명령어 입력) 환경변수 NODE_ENV를 입력

set process.env.NODE_ENV = production

 

처음 조회했을때는 undefined로 나오다가, set명령어 호출 뒤에는 production으로 정상 호출되는 것을 볼 수 있습니다.

 


 

 

.env 사용 방법

이제 이 글을 쓰는 목적에 도달했습니다..^^;

.env파일을 프로젝트의 root에 만들고, 이를 관리하는 방법입니다.

 

1. npm i dotenv --save 명령어를 통해 dotenv 라이브러리를 설치합니다.

 

2. root 에 .env파일 생성

 

3. .env파일 편집

 

4. require 추가 및 console.log 로 찍어보기

 

이렇게 설정하고, 서버 단의 .env파일과 로컬에 있는 .env파일을 별개로 가져간다면,

간편한 환경변수 관리가 가능합니다.

gitignore에 .env파일을 추가해야겠죠?


 

 

 

마무리

실무에서는 NODE_ENV이외에도,

API key, 특정 URL과 같은 다양한 변수들을 활용하여 개발을 진행하고 있습니다.

위 방법들을 보시고 환경변수 설정에 대한 이해와 더불어

.env 라이브러리를 잘 활용해보시면 될 것 같습니다.

 

 

 

-퍼가실 때는 출처를 꼭 같이 적어서 올려주세요!

 

반응형