이끌든지 따르든지 비키든지

Project/Node.js

[Node.js] env로 환경변수 관리하기

SeongHo5 2023. 9. 13. 14:54

웹서버에서 DB로 연결을 구성할 때, config  파일에 호스트, 이름, 암호, 포트번호 등을 반드시 작성해야 한다.

로컬 환경에서 개발·테스트를 진행할 때에는 이 정보를 하드코딩(상수나 변수값을 코드에 직접 쓰는 것)해도 큰 문제가 발생하지 않겠지만, public 등에 배포되는 경우, 암호나 비밀키가 그대로 노출되는 문제가 발생한다.

 

위와 같은 문제를 예방하기 위해 중요한 정보(암호, 비밀키 등)은 환경 변수를 사용해 관리할 것을 권장하는데,

Node.js는 process.env 라는 자체 기능을 통해 환경 변수 관리를 지원한다.

 

하드코딩 방식으로 config를 작성한 경우
const databaseConfig = {
  database: 'mydatabase',
  username: 'myuser',
  password: 'mypassword55443322',
  host: 'hostname1122',
  port: 5432,
  dialect: 'postgres',
};

dotenv 설치

 

process.env 기능은 .env라는 파일에 먼저 환경 변수를 작성·관리하고, dotenv라는 모듈을 통해 환경 변수를 읽어온다.

터미널에 아래 명령어를 통해 dotenv를 설치할 수 있다.

npm install dotenv

환경 변수 작성

 

프로젝트 루트 폴더 등에 .env 라는 파일을 만들고, 그 파일에 사용할 환경 변수를 아래 예시와 같이

"이름 = 값" 형식으로 작성하면 된다.

APP_NAME='YOUR_APP_NAME'
APP_PORT=3000

DB_HOST=hostname
DB_USERNAME=username
DB_PASSWORD=password1234
DB_PORT=3306

환경 변수 불러오기

환경 변수를 불러와 사용할 곳에 아래 코드를 작성해주면 .env를 불러올 수 있다.

import dotenv from 'dotenv';

dotenv.config();

console.log(process.env.DB_HOST);	// host1234
console.log(process.env.DB_USER);	// username
console.log(process.env.DB_PASSWORD);	// password1234
console.log(process.env.DB_PORT);	// 3306

만약 .env 파일을 프로젝트 루트 디렉토리가 아닌 다른 곳에 작성했다면 dotenv.config(); 코드의 ( )안에 env 파일의 경로를 작성해주면 된다.