오늘은 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"모듈에 대해서 정리해 보았습니다.
사용법이 간단하면서도, 필요한 모듈이라고 생각합니다.
업데이트할 내용이 있다면 이 글을 통해서 변경하도록 하겠습니다.
'NodeJS, NPM, Koa' 카테고리의 다른 글
Cheerio 와 Bent 이용한 HTML 파싱과 Scraping (0) | 2021.10.15 |
---|---|
Koa JS FrameWork을 이용한 RestAPI 만들기 # NodeJS (0) | 2021.05.01 |
WebStorm NodeJS Coding Assistance 활성화 방법 (0) | 2021.04.29 |
NodeJS Get 과 Post 의 Parameter 와 QueryString 전달 방법 (0) | 2021.04.28 |
Babel 을 Webstorm 과 터미널 에 적용하는 방법 # Compiler ES6 (0) | 2021.04.28 |
JWT(Json Web Token)와 세션관리에 대해서 알아보자 (0) | 2020.05.18 |
A Record와 CNAME Record의 차이를 알아보자 (0) | 2020.04.02 |
댓글