안녕하세요.
Hynn 입니다.
이번 포스팅에서는 환경변수를 관리하는 NPM Module 에 대해서 알아보도록 하겠습니다.
Local 에서 관리하는 Javascript File 에서는 DB 의 대한 ID/Password 뿐 아니라, 다양한 정보가 저장되어 있을 수 있습니다.
혹은 Host, Port 같은 정보도 존재합니다.
이를 관리하기 위해서 DOTENV 라는 NPM Module 를 활용하여
이러한 환경변수를 생성,관리하는 방법에 대해서 알아보도록 하겠습니다.
===============
===============
1. DOTENV Module 설정
환경변수 관리를 위한 "DOTENV" 를 먼저 설치해야 합니다.
NPM Install 은 아래의 명령어를 사용해서 간단하게 설치를 완료합니다.
NPM Module Install command
npm install dotenv
그리고 사용하고자 하는 Directory 최상단 경로에 ".env" 파일을 생성합니다.
그리고 반드시 ".gitignore" 에 ".env" 파일을 추가해주셔야 합니다.
이러한 파일에 담긴 정보는 "환경변수" 이기때문에, 타인에게 굳이 전달하거나 공유할 이유는 없습니다.
DB 의 대한 접근키나, Host,Port 같은 정보들이 담기기 때문입니다.
위의 대한 설정을 모두 완료했다면 기본 설정이 모두 완료되었습니다.
이제 이를 직접 사용해보도록 하겠습니다.
2. Code 작성하기 및 초기설정
이제 Server.js 상단에 아래와 같은 구문을 작성해서, "dotenv" 를 가져와야 합니다.
require("dotenv").config();
만약 실제 경로가 불가피하게 최상단이 아니거나, 특정 경로를 이용해야 할 때는 "Config" 영역에 별도의 "Path" 를 지정해주어야 합니다.
예시는 아래와 같습니다.
require("dotenv").config({path:"File Directory"});
이제 .ENV에 환경변수를 생성해보도록 하겠습니다.
주의해야 할 점은, 이 환경변수 파일은 "text" 이기때문에, 띄어쓰기나, " ; " 등을 사용하시면 올바르게 읽히지 않습니다.
몇가지 예시를 작성한다면 이렇게 작성이 가능합니다.
PORT=9999
HOST=localhost
NODE_ENV=Hynn
DB_HOST=Hynn
DB_PORT=9998
DB_USER=Hynn
DB_PASSWORD=1234
DB_DATABASE=HynnBlog
각각 "속성명"="값" 으로 작성이 됩니다.
위의 예시처럼 띄어쓰기나, "", '', ";" 과 같은 기호를 사용하지 않고 텍스트 그대로 입력을 하면 되겠습니다.
이제 실제 코드에 적용해보도록 하겠습니다.
3. Code 에서 ENV 변수 사용하기
이를 이제 실제로 적용한다면, 아래와 같이 예시로 적용이 가능합니다.
위에서 가장 많이 예시로 들어낸 DB에 적용해보도록 하겠습니다.
먼저 기존의 DB Sample Code 입니다.
const mysql = require('mysql2');
const pool = mysql.createPool({
host : '1234'
port : '1234'
user : '1234'
password : '1234'
database : '1234'
})
.promise()
위 코드는 그대로 나의 정보를 모두 공개된 상태로 Commit 이 올라가기엔 다소 민감한 정보들이 있습니다.
이를 이제 환경변수로 대입을 하기 위해서는 각각의 변수로 이 ENV 를 담아야 합니다.
const host = process.env.DB_HOST || 'localhost';
const port = process.env.DB_PORT || '3306';
const user = process.env.DB_USER || 'Hynn'
const password = process.env.DB_PASSWORD || '1234'
const database = process.env.DB_DATABASE || 'HynnBlog'
논리연산자를 통해, process.env 의 환경변수 중 "속성명" 을 입력하고, 논리연산자를 이용하면 환경변수가 존재하지 않을 시 "값"을
사용하도록 설정했습니다.
이제 위 정보를 적용한다면, 아래와 같이도 표현이 가능합니다.
require('dotenv').config()
const mysql = require('mysql2');
const host = process.env.DB_HOST || 'localhost';
const port = process.env.DB_PORT || '3306';
const user = process.env.DB_USER || 'Hynn'
const password = process.env.DB_PASSWORD || '1234'
const database = process.env.DB_DATABASE || 'HynnBlog'
const pool = mysql.createPool({
host, port, user, password, database
})
.promise();
어렵지 않게 이해가 가능할 것이라고 생각합니다.
환경변수 역시도 이렇게 지정을 해놓으면, 동료들과 작업시에도 이러한 데이터의 문제가 발생하지 않으므로, 문제가 발생할 확률이 낮아지고, 환경변수의 관리 역시 개인화가 가능합니다.
감사합니다.
'개발공부일지 > NodeJS' 카테고리의 다른 글
NodeJS - JWT (JSON Web Token) 기초 및 개념 이해하기 (0) | 2023.01.17 |
---|---|
NodeJs - ORM을 이용해서 backend 데이터 사용 예제 (Feat. Sequelize) (0) | 2023.01.16 |
NodeJS - Ajax실제 작성예시 따라해보기 (0) | 2023.01.08 |
Node.JS - CORS 에 대하여 (0) | 2023.01.04 |
Node.JS - Async/Await 이해하기 (1) | 2022.12.23 |
댓글