본문 바로가기
NodeJS, NPM, Koa

Dotenv 로 관리하는 환경변수 # NodeJS

by Developer88 2021. 5. 1.
반응형

오늘은 NodeJS를 개발하면서 Dotenv로 환경변수를 관리하는 방법에 대해서 정리해 보도록 하겠습니다.

 

1. Dotenv 와 NodeJS의 환경변수

환경 변수는 Production 모드, Dev 모드 전환, DB 비밀번호, API 액세스 키 등 중요한 정보를 저장하는 데 사용합니다.

NodeJS에서는 Dotenv 모듈을 활용하여 이러한 환경 변수를 .env 파일에 저장하고, 

process.env를 통해 쉽게 불러올 수 있습니다. 

이렇게 해서 보안을 강화하고 설정을 간편하게 관리할 수 있습니다.

 

2. 모듈 설치

모듈을 설치하기 위해서 다음 명령어를 입력해 줍니다.

 

npm install dotenv --save

 

3. '.env' 파일 생성과 환경변수 저장

제일 먼저 할 일은 프로젝트의 루트에 '.env' 파일을 만들고,

그안에 "NAME=VALUE" 형식으로 환경변수들을 집어넣어 주는 것 입니다.

아래와 같이 환경변수를 저장해 보겠습니다.

사용할 때, ""로 사용하는 값들은 ""로 감싸서 저장하구요.

그렇지 않은 값들은 아래와 같이 ""없이 바로 넣어주면 됩니다.

 

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=mysecret

 

 

4. 환경변수 로딩하고 사용하기

4-1. dotenv 초기화

제일 먼저 할 것은, 아래와 같이 'dotenv'를 require하고 config()를 호출해서 초기화 하는 것 입니다.

config()함수가 ".env"파일을 읽어서, process.env에 값을 넣어주기 때문에,

'.env'파일에 저장된 중요한 값들을 사용할 때마다,

require할 필요가 없습니다.

 

config()함수의 return값으로 키와 밸류를 가진 값을 주거나,  실패할 경우는 error값을 줍니다.

 

const dotenv = require('dotenv').config;
if (dotenv.error) throw dotenv.error

console.log(dotenv.parsed);

 

만약, 좀더 도움이 되는 에러결과를 받고 싶다면 아래와 같이 debug모드를 true로 해 줍니다.

 

const dotenv = require('dotenv')
result = dotenv.config({ debug: true })

 

4-2. 저장된 값 가져와 사용하기

위에서 초기화를 한 결과,

'process.env'에 값들이 모두 들어가 있게 됩니다.

 

이제 그 값들을 가져와 사용해 보겠습니다.

'process.env.DB_HOST'와 같이 값을 가져와 사용해주면 끝입니다.

 

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD
});

// MySQL 연결
connection.connect((err) => {
  if (err) {
    console.error('MySQL 연결 실패:', err);
    process.exit(1); // 프로세스 비정상 종료
  }
  console.log('MySQL 연결됨');
});

 

5. 팁 및 주의할 점

5-1. gitignore에 포함시키기

이 환경변수에 DB의 키값등을 넣어서 사용하게 될 경우,

commit을 하지 않는 것이 좋습니다.

대신, 프로덕션 서버에는 서버에서 사용하는 env값을 가지고 있어야 하겠지요.

아래와 같은 2줄이 gitignore에 포함되도록 합니다.

 

# dotenv 
.env

 

5-2. 프로덕션 레벨에서는 주의가 필요

프로덕션레벨에서는 '.env'사용에 많은 주의가 필요합니다.

암호화되지 않은 파일에 주요 정보가 들어가 있기 때문입니다.

 

6. 정리

이상으로 환경변수를 파일로 저장해서 사용할 수 있는 ".env"모듈에 대해서 정리해 보았습니다.

사용법이 간단하면서도, 필요한 모듈이라고 생각합니다.

업데이트할 내용이 있다면 이 글을 통해서 변경하도록 하겠습니다.

 

728x90

댓글