Node.js에서 환경 변수에 어떻게 접근하고 설정할 수 있는지 알아보자.
API key와 같이 공개할 수 없는 정보가 코드에 포함될 경우, 네트워크를 통해 API key가 공개될 수 있다.
이런 일을 방지하기 위해서는, API key를 PC에 저장해두고 사용해야 한다.
JavaScript에서 변수에 문자열을 할당하는 것처럼, API key를 PC에서 사용하는 변수에 할당하고 사용할 수 있다.
DB password나 API key와 같은 인증 정보는 공개된 코드 저장소에 올리면 안되기 때문에 환경 변수로 저장해놓고 사용하는 것이 일반적이다.
Node.js에서 환경 변수에 접근할 때는 process.env
라는 내장 자바스크립트 객체를 사용한다.
process
는 전역 개체라서 별도로 임포트해야하는 모듈이 없고 애플리케이션 어디에서든지 접근이 가능하다.
node
> process.env
...
> process.env.USER
...
> process.env.HOME
...
운영 체제에 따라서 다양한 방법으로 설정할 수 있다.
애플리케이션을 실행할 때 일회성으로 환경 변수를 설정하고 싶다면 node
명령어 앞에 환경변수를 키=값
형태로 명시해준다.
$ API_KEY=abc DB_PASSWORD=1234 node
Welcome to Node.js v14.15.0.
Type ".help" for more information.
> process.env.API_KEY
'abc'
> process.env.DB_PASSWORD
'1234'
이렇게 Node.js 프로세스 레벨에서 설정해준 환경 변수는 해당 프로세스가 살아있는 동안에만 유효하고, 프로세스가 종료되면 사라진다.
운영 체제에서 지원하는 커맨드를 이용하면 터미널 창을 닫을 때까지 설정한 환경 변수를 유지할 수 있다.
리눅스나 Mac OS에서는 export 키=값
을 사용해서 환경 변수를 설정해주면 된다.
$ export API_KEY=abc
$ export DB_PASSWORD=1234
$ node
Welcome to Node.js v14.15.0.
Type ".help" for more information.
> process.env.API_KEY
'abc'
> process.env.DB_PASSWORD
'1234'
이렇게 터미널 레벨에서 설정한 환경 변수는 Node.js 프로세스를 종료하고 새로운 프로세스를 실행하더라도 동일한 환경 변수 값을 얻을 수 있다.
process.env
는 가변 객체이기 때문에 얼마든지 새로운 항목을 설정하거나 기존에 설정된 값을 자유롭게 갱신 또는 제거할 수 있다.
$ node
Welcome to Node.js v14.15.0.
Type ".help" for more information.
> process.env.API_KEY = "abc"
'abc'
> process.env.API_KEY
'abc'
> process.env.API_KEY = "def"
'def'
> process.env.API_KEY
'def'
'1234'
> delete process.env.API_KEY
true
> process.env.API_KEY
undefined