TIL. 42 .env file , dotenv

조윤식·2022년 9월 1일
0

.env 파일이란

" 환경 변수 파일 " 을 의미한다.

이 파일은, 애플리케이션이 실행될 때 넘기고 싶은 특정 값을 담고 있는 변수가 기록되어 있다.

미리 정의된 값을 애플리케이션에서 활용하고 싶을 때 이 .env 파일을 활용한다.

.env

// .env 파일
// DB에 접속하기 위해 필요한 username과 password와 dbname을 변수에 차례차례 담아줬다.
DATABASE_USERNAME='lee'
DATABASE_PASSWORD=1234
DATABASE_NAME='learnsql'
// .env 파일
// local URI 와 test server를 위한 URI, id와 비밀번호 등등 다양한 방식으로 담아둘 수 있다.
REACT_APP_LOCAL_URI=http://localhost:8080/
REACT_APP_TEST_SERVER=http://test.com:9090/
clientId=client-test1111
clientServer=server-test1111

위에서 설정한 변수들은 애플리케이션 로직에도 활용할 수 있고, 웹팩으로 빌드할 때도 사용할 수 있다.

.env 활용 모듈 - dotenv ?

dotenv

nodeJS 의 모듈로, npm 을 사용해 설치하고 사용할 수 있다.

dotenv 를 사용해 현재 디렉토리에 위치한 .env 파일로부터 환경 변수를 읽어낼 수 있다.

// npm install dotenv (node.js에 dotenv 설치하시구요)
// 애플리케이션이 작동될 때 가장 먼저 실행되는 js파일의 최상단에서 config() 함수를 호출해주면
// .env파일에 저장된 환경 변수를 process.env 모듈을 통해 불러올 수 있다.
require("dotenv").config();
console.log("DATABASE_USERNAME: ", process.env.DATABASE_USERNAME);
console.log("DATABASE_PASSWORD: ", process.env.DATABASE_PASSWORD);
console.log("DATABASE_NAME: ", process.env.DATABASE_NAME);
// DATABASE_USERNAME: lee
// DATABASE_PASSWORD: 1234
// DATABASE_NAME: learnsql

// 만약에 .env가 아니라 다른 경로에 사용할 환경 변수를 저장해뒀다면
// config 함수에 path키에 경로를 담은 객체를 인자로 전달해서 호출하면된다.
require("dotenv").config({path: "/path/.env.example"});

환경 변수 활용해서 DB 랑 NodeJS 연결하기 - mysql ?

mysql

.env 에 들어있는 환경 변수들을 nodeJS 에서 잘 불러왔다면, 이제부턴 DB를 연결해보자 !!
mysql 은 nodeJS 의 모듈로, npm 을 사용해 설치하고 사용할 수 있다.
원하는 데이터베이스와 nodeJS 를 연결할 때 필요하다 :)

// npm install mysql (node.js에 mysql 설치하시구요)
const dotenv = require("dotenv");
const mysql = require("mysql");
dotenv.config();
const connection = mysql.createConnection({
host : 'localhost',
user : process.env.DATABASE_USERNAME || 'root',
password : process.env.DATABASE_PASSWORD || '',
database : process.env.DATABASE_NAME || 'learnsql'
});
connection.connect();
// query문 처리한 후
connection.end();

mysql 모듈에서 createConnection 이란 모듈에 착착 key와 value를 맞춰 넣어주면 원하는 DB와 연결할 수 있다 !

// connect 메서드에 콜백 함수 넣어서 DB와 NodeJS의 연결 여부 확인하기
connection.connect(function(err){
if(err) throw err;
console.log("Connected!");
})

이런식으로 함수를 전달함으로써 연결이 잘 되었는 지 안되었는 지 확인할 수도 있고

// query 메서드에 콜백 함수 넣어서 원하는 SQL 결과 들고 오기
const sql = SELECT * FROM table // 예시 SQL문
connection.connect(function(){
connection.query(sql, function(err, result){
if(err) throw err;
console.log("Result: ", result);
});
});
// connect 안과 밖 모두 query 메서드를 사용할 수 있다.
connection.query(sql, function(err, result){
if(err) throw err;
console.log("Result: ", result);
});

profile
Slow and steady wins the race

0개의 댓글