환경 변수란?
프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임 [위키피디아]
- 우리가 컴퓨터로 하는 모든 작업들은 OS라는 프로그램에 의하여 실행되는 자식프로세스이다. 환경변수는 OS입장에서 해당 프로세스를 실행시키기 위하여 참조하는 변수이다.
- 어느 환경에 배포하느냐에 따라서 다르게 설정해야하는 항목은 보통 운영 체제 레벨에서 환경 변수를 통해 관리하게 된다. DB password나 API key와 같은 인증 정보는 공개된 코드 저장소에 올리면 안 되기 때문에 환경 변수로 저장해놓고 사용한다.
환경 변수 접근
내가 사용할려는 node.js에서는 dotenv를 사용하여 접근한다.
Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology. [dotenv 공식문서]
process.env라는 내장 자바스크립트 객체를 사용한다. 이는 위에서 인용문에서 알려주는 것과 같이 dotenv는 환경변수를 .env파일에 저장하고 process.env로 로드하는 의존성 모듈이다. process는 전역 객체여서 별도로 임포트해야하는 모듈이 없으며 애플리케이션 어디에서든지 접근이 가능하다. dotenv 패키지를 이용하여 환경변수 파일(.env)을 외부에 만들어 접근할 수 있게한다.
거의 그런 경우는 없기는 하지만, 중요한 정보만 저장하고자 했을 때는 .env파일만 만들어서 써도 된다. .env파일에 정보를 저장하고, 다른 파일에서 그 정보를 꺼내오고자 해서 쓰는 모듈이다.
dotenv 패키지
dotenv 설치
npm install dotenv
.env 파일 생성
// .env 파일
DATABASE_NAME='[DB명]'
DATABASE_USERNAME='root'
DATABASE_PASSWORD=''
- 설치 후 .env파일을 루트경로에 생성한 후 안에 들어갈 텍스트는 반드시 이름 = 값형식으로 적어준다.
- 애플리케이션을 실행할 때 1회성으로 환경 변수를 설정하고 싶다면 node명령어 앞에 환경 변수를 키=값형태로 명시를 해줍니다.
- Node.js 프로세스 레벨에서 설정해준 환경 변수는 해당 프로세스가 살아있는 동안에만 유효하며 프로세스를 종료하면 사라진다. 따라서 다시 Node.js 인터프리터를 실행하면 이 전에 실행할 때 명시했던 환경 변수를 얻을 수 없다.
require('dotenv').config()
require('dotenv').config();
- .env를 사용하고자 하는 파일 안에 dotenv를 부른다.
- dotenv.config()는 현재 디렉토리의 .env파일을 자동으로 인식하여 환경변수를 세팅한다.
- dotenv.config(경로)는 원하는 .env파일의 위치를 직접 지정하여 세팅할 수 있다. ex) dotenv.config(__dirname +’~); 을 써서 지정해줄 수 있다. 그런데 이를 쓸 때는 path모듈을 불러와서 사용해야 한다. .
dotenv 주의사항
// .gitignore 파일
.env
.env파일에 저장하더라도 .env파일을 깃허브 등에 올린다면 이를 공개하는 것과 다름없기때문에 .gitignore파일에 .env파일을 추가해준다.
.env파일은 루트에 위치해야한다. 위치를 제대로 설정안해주면 에러난다.
아래와 같은 글을 참고하여 작성하였습니다.