API 키나 계정의 ID, 비밀번호와 같은 기밀 정보를 있는 그대로 코드에 작성하거나,
기밀 정보가 담긴 코드를 Github과 같은 오픈소스에 공개하는 것은 보안적으로 아주 위험한 행동이다.
dotenv는 .env
라는 외부 파일에 중요한 정보를 환경변수로 저장하여 정보를 관리할 수 있게 해준다.
그래서 dotenv
를 사용하면, 전역적으로 필요한 정보나 기밀 정보와 같이 예민한 정보를
일반 소스 코드 내부가 아닌 .env
라는 외부 파일에 작성할 수 있게 된다.
잊지 말아야할 것(!)은 중요한 정보가 담긴 .env
파일을 git
에 commit하면
파일 내용이 그대로 git
에 박제(?) 되기 때문에
.gitignore
에 .env
파일을 추가해주어 파일이 git
에 올라가지 않도록 배제해준다.
dotenv
를 사용하기 위해선 먼저 설치를 해줘야겠쥬?🤓
# npm
npm install dotenv
# yarn
yarn add dotenv
이번에 dotenv
를 사용하며 Node.js(Express)
에서 MongoDB
를 연결해보고자 한다.
가장 먼저, 프로젝트의 루트 경로에 .env
라는 파일을 생성한다.
.env
파일에서 환경변수를 정의하는 방법
- 변수명=값
변수명은 물론 자유롭게 정하면 된다. 아주 간단하다!
다음과 같이 .env
파일에 원하는 포트 번호와 MongoDB
주소를 환경변수로 정의해준다.
# .env
PORT=5000
MONGODB_URI=mongodb+srv://<id>:<password>@....
위에서도 언급했듯이, .env
파일은 중요한 정보가 담겨있기 때문에
git
에 업로드되지 않도록 .gitignore
파일에 반!드!시 추가해준다.
# .gitignore
.env
프로젝트의 루트 디렉토리에 DB를 연결하는 파일인 index.js
를 생성한다.
그 후 가장 먼저, index.js
의 상단에 아래 코드를 작성하여 환경변수를 불러오도록 한다.
// index.js
require('dotenv').config();
.env
로부터 불러온 환경변수를 사용하기 위해서는
process.env.변수명
키워드를 사용한다.
예를 들면, .env
에서 선언된 환경변수인 PORT
와 MONGODB_URI
를 사용하려면
아래와 같이 작성해주는 것이다.
process.env.PORT
process.env.MONGO_URI
다음은 이를 이용하여 완성된 코드이다.
// index.js
require('dotenv').config(); // .env 파일에서 환경변수 불러오기
const { PORT, MONGO_URI } = process.env;
const express = require('express') // Express 모듈을 가져옴
const app = express() // app이라는 새로운 Express 앱을 만듦
const port = PORT || 4000 // 서버 포트 번호. .env에 PORT 값이 설정되어 있지 않다면 4000 사용
const mongoose = require('mongoose')
mongoose.connect(MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
}).then(() => console.log("MongoDB Connected"))
.catch(error => console.error(error))
// 루트 디렉토리에 오면 Hello World를 출력되게 함
app.get('/', (req, res) => {
res.send('Hello World!')
})
// 위에서 설정한 port에서 앱을 실행시킴
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
Example app listening at http://localhost:5000
MongoDB Connected
MongoDB Connected.
서버를 실행해보면 위의 캡쳐와 같이 오류 없이 잘 실행되는 모습이다😋
Node.js(Express)
와 MongoDB
를 연결하는 것에 성공했다.
포트 번호도 .env
에서 설정한 5000
그대로 잘 설정되었다⭐️
dotenv
를 사용한 환경변수를 설정하는 방법과
Node.js(Express)
와 MongoDB
를 연결하는 방법에 대해 알아보았다.
환경변수를 저장한 .env
파일은 반드시 .gitignore
에 추가하여
git
에 commit할수 없도록 설정하는 것을 잊지 말자!