env란?
env를 사용하는 이유?
프로젝트를 진행할 때 서버주소, DB 정보, 고유 API KEY 등 숨겨줘야 하는 정보들이 존재한다.
이러한 정보들은 민감한 정보임과 동시에 보안이 이루어져야 하는 정보들이다. 만약 이러한 정보들이 깃 오픈소스에 공개될 경우, 해킹을 당하거나 보안적인 면에서 위험할 수 있다.
이러한 문제로 dotenv 패키지를 이용하여 환경변수 파일(.env)을 외부에 만들어 접근하는 방식으로 이러한 위험을 피할 수 있다. (.env라는 외부 파일에 환경변수를 정의하여 변수를 받아오게 되면 보안과 유지보수에 용이하다)
dotenv Package
dotenv 설치
npm install dotenv
dotenv 파일 생성
주의할 점이, env 파일은 프로젝트의 최상위 루트에 만들어주어야 한다는 것이다.
// env 파일
DATABASE_NAME = "[DB명]"
DATABASE_USERNAME = "root"
DATABASE_PASSWORD = " "
// 내가 쓴 방식
DB_URL = "주소값"
파일 안에 들어가는 내용으로는 반드시 "이름 = 값"의 형태로 적어주도록 한다.
(환경변수는 특정 process를 위한 key-value 형태의 변수)
dotenv 사용 - require("dotenv").config()
.env를 사용하고자 하는 파일 안에 다음과 같은 형식으로 dotenv를 부른다.
// env를 사용할 파일
require("dotenv").config()
require("dotenv").config()는 현재 디렉토리의 .env 파일을 자동으로 인식해서 환경변수를 세팅한다.
만약 .env가 최상위 폴더가 아닌 다른 경로에 있다면, config() 함수 호출 시 path 옵션을 넘겨주면 된다.
// env를 사용할 파일
require("dotenv").config({ path: "/config/.env" })
dotenv를 불러온 후 .env에 저장되어 있는 변수들을 부를 때는 process.env.변수이름 으로 불러주면 된다.
//env 필요한 파일
const dotenv = requiure("dotenv").config();
const connect = () => {
mongoose
.connect(
process.env.DB_URL,
{
dbName : 'node_lv1',
},
)
//mongodb가 연결중에 에러가 발생하면 아래의 코드로 감
.then(() => console.log('MongoDB 연결에 성공하였습니다.'))
.catch((err) => console.log(`MongoDB 연결에 실패하였습니다. ${err}`));
};
env 를 통해 mongoose에 들어가는 주소 값을 숨길 수 있었다. (현재 주소값 안에는 id, pw가 들어간다)
주의 사항
.env 파일에 저장했더라도 .env 파일을 오픈소스 (깃허브)에 올린다면 숨길 정보를 공개하는 것이기 때문에 .gitignore 파일에 .env파일을 추가하여 git에 올라가지 않도록 한다.
'Node.js' 카테고리의 다른 글
Backend -> Frontend로 쿠키 보내기(with Token) (0) | 2023.11.28 |
---|---|
[Node.js] Access Token & Refresh Token 을 이용한 로그인 / 로그아웃 (0) | 2023.11.24 |
Express를 이용해 서버 만들기 (2) | 2023.11.14 |
모듈 (0) | 2023.11.11 |
[Node.js] REPL (1) | 2023.11.10 |