본문 바로가기
  • 포르쉐타고싶다
인포테인먼트 - development/node.js

[node.js] dotenv 사용법 및 적용 및 에러 해결

by 지오ㄴl 2020. 4. 10.

1. dotenv 실행 순서

 

1) dotenv를 설치한다.
npm i dotenv —save

 

2) 보안이 담긴 값들을 담은 .env파일을 만든다
3) 서버 실행 시 가장 먼저 실행되는 파일(index.js나 app.js)에 env를 가져오는 명령어를 입력(두가지 상황)

 

(1) 단일 상황에 대한 보안값을 담은 단일 파일 .env이면

 require('dotenv').config(); 

 

(2) 몇가지의 상황(개발 or 배포)에 대한 보안값을 담은 몇개의 파일로 나뉘어 있다면(prod.env, dev.env)ㅋ

if(process.env.NODE_ENV === 'production') {
      require('dotenv').config({ path: path.join(__dirname, '/env/server.env') });
      console.log('production mode');
      console.log(process.env.API_URL);
} else {
      // dotenv.config({ path: path.join('/env', './local.env')});
      require('dotenv').config({path: path.join(__dirname, '../env/local.env')});
      console.log('development mode');
      console.log(result);
}

 

(3) env 파일의 내용을 사용하는 config파일에서 env파일에 들어있는 값들을 사용한다.

- 프로젝트 실행 시 가장 먼저 실행되는 파일(index.js나 app.js)에서 지정된 env파일불러 환경변수에 그 값들을 올려놨기 때문에

process.env.[보안값의 키]

 

를 통해 해당 보안 값을 불러와 배치한다.

 

2. 이틀동안 헤맸던 부분

 

1) 이름이 붙은 env파일(prod.env 같은)을 프로젝트 시작파일에서 불러올 때
require('dotenv').config(); 


가 아닌

require('dotenv').config({ path: path.join(__dirname, '/env/server.env') }); 


이렇게 불러와야 한다.

 

2) dotenv를 사용하기 전 dbConfig파일에 직접적으로 사용하고 있던 보안값들을

복붙

해서 ' : ' 부분만 ' = '으로 바꾸고 env파일을 만들었는데

  1. 항상 env파일의 첫번째 줄만 읽고 다머지 값들은 읽어오지 못하고

  2. env를 require해주고 있던 index.js의 나머지 명령들을 읽지 못하는 문제가 생겼다.

결국 찾아낸 것은,

내가 만든 env파일인 prod.env를

복붙이 아닌 새로 타이핑해서 입력해주었더니

정상적으로 값들이 config파일에서 읽혀올 수 있었다.

 

3) env파일은 키 : 값 이 아닌

키 = "값"

형태로 값들을 입력해야 나중에 등록, 읽어올 수 있다.

반응형

댓글