Skip to content

Latest commit

 

History

History
74 lines (43 loc) · 3.53 KB

환경 변수 위치 및 상세 설정.md

File metadata and controls

74 lines (43 loc) · 3.53 KB

< 뒤로가기

환경 변수 위치 및 상세 설정

  • 작성자 : @unchaptered
  • 작성일자 : 2022-08-16

dotenv + cross-env 를 이용하여 중요 정보 의 은닉 및 관리를 할 수 있는 여러 가지 예시를 포함하고 있습니다.

많은 분들이 보실 수 있게 require() 구문을 사용해서 설명하고 있습니다. 만약 import 구문을 사용 하시면, 다음의 내용 처럼 해석하셔서 읽으면 좋을 것 같습니다.

모든 내용은 경험에 의존해서 결과론적 으로 서술하고 있으며, 실제 dotenv 에서 어떻게 작동하는 지와는 차이가 있을 수 있습니다.

import dotenv from 'dotnev';
const dotenv = require('dotenv');
  • 작성자 : @unchaptered
  • 작성일자 : 2022-xx-xx

process 에 대한 간략한 이해

Node.JS 는 기본적으로 모듈 시스템 위에서 작동하고 있습니다.
하나의 JavaScript 파일이 하나의 모듈로써 존재하며, 이들을 연결 짓기 위한 문법이 존재합니다. require or import 과 같이...

process 는 이러한 모듈 전체에서 바로 접근 가능한 글로벌 빌트인 객체 입니다.
이 친구는 Node.JS 가동에 필요한 거의 대다수의 정보를 포함하고 있습니다.
따라서, 프로그램 운영 상에 필요한 정보를 이에 보관하는 방법을 사용하는 것 같습니다.

더 자세한 내용은 아래 문서를 확인해주세요.

항해를 진행하면서 받았던 질문에 명확하게 답하지 못헀던 부분이여서 추가로 조사를 해보았습니다.
freeCodeCamp 사이트의 Node Process Object Explained 게시글을 참고해서 작성 되었습니다.
> https://www.freecodecamp.org/news/node-process-object-explained/#:~:text=The%20process%20object%20in%20Node,essential%20component%20in%20the%20Node.


dotenv 에 대한 이해

dotenv 를 알게되고 구글링을 해보면 이런 코드가 정말 많이 나옵니다.

아래 코드를 실행 시키면 프로젝트 루트 경로 에 있는 .env 파일을 자동으로 process.env 객체 안에 넣어줘서 사용 가능하게 만들어 줍니다.

require('dotenv/config');

console.log(process.env.PORT);

이 부분은 혁신처럼 느껴졌고 마치 하나의 정답 처럼 사용해 왔습니다.

중요한 정보는 .env 에 해당 정보가 필요하면 require('dotenv/config') 를

하지만 이러한 방식은 아래와 같은 문제점이 있습니다.

  1. 여러 운영 환경 별로 다른 변수 를 사용할 수 없다.
  2. 실행 전까지 값의 누락 을 확인할 수 없다.
  3. 실행 전까지 값의 타입 을 확인할 수 없다.

즉, 확장성과 안정성이 떨어지는 이 친구를 어떻게하면 다양한 환경에 안정적으로 적응할 수 있는 객체 로써 가공하는 지에 대한 경험을 적어보고자 합니다.


dotenv 의 또 다른 사용법에 대한 개념

dotenv/config 는 dotenv 모듈 안의 config 함수를 실행시키고 있습니다.
따라서 다음과 같은 형태를 통해서 dotenv 에서 제공해주는 기본 기능을 변형하여 사용할 수 있습니다.

dotenv 의 모듈에 대한 궁금증이 더 있으시다면, dotenv 에 대하여 알아보자 를 참고해주세요.

const dotenv = require('dotenv');

dotenv.config();

config 는 error 혹은 parsed 가 들어있습니다.