Skip to content

Dotenv

.env 관련 내용들.

Categories

Nodejs 의 프로젝트

INFORMATION

참고로 CRA로 만든 React App 은 이미 dotenv가 포함되어 있다. 하단부 참고

패키지 설치:

yarn add dotenv

.env 파일을 만든다:

DB_HOST=localhost
DB_USER=root
DB_PASS=1234

이후, require("dotenv").config(); 호출한 후 process.env를 사용하면 된다.

CommonJS version:

// process.env 를 먼저 쓰면 안된다.
require("dotenv").config();

console.log("DB_HOST:", process.env.DB_HOST);
console.log("DB_USER:", process.env.DB_USER);
console.log("DB_PASS:", process.env.DB_PASS);

ECMAScript version:

import dotenv from "dotenv";

dotenv.config();

console.log("DB_HOST", process.env.DB_HOST);
console.log("DB_USER:", process.env.DB_USER);
console.log("DB_PASS:", process.env.DB_PASS);

다른 경로의 파일을 읽어야 한다면:

dotenv.config({ path: '.env.local' });

node -r dotenv/config로 코드 호출 없이 사용 가능:

DOTENV_CONFIG_PATH=.env.local node -r dotenv/config index.mjs

디버깅 및 덮어쓰기 방법:

const result = dotenv.config({ debug: true, override: true });

CRA로 만든 React 프로젝트

  • React 프로젝트에서 dotenv 적용 시에 만난 두 가지 오류
  • CRA 로 리액트 프로젝트를 만들 때는 dotenv를 설치하지 않아도 된다. (이미 내장되어 있다..)
  • .env 파일은 package.json 파일과 같은 경로인 루트 경로에 있어야 한다.
  • react로 dotenv를 사용할 때는 변수명의 접두어로 REACT_APP_ 를 꼭 적어주어야 한다.
  • .env 파일 안에 key = value 의 쌍으로 되어있는지 확인하기.
  • 세미콜론(;), 콤마(,), 홑따옴표('), 쌍따옴표(")로 감싸지 않는다.
  • .env 파일 수정 후에는 서버를 껐다가 다시 구동해야 변경사항이 적용된다.
  • .gitignore 파일에 .env 꼭 추가하기

bash 스크립트에서 적용 방법

allexport 방법:

set -o allexport
source .env
set +o allexport

regex 방법:

export "$(grep -vE "^(#.*|\s*)$" .env)"

See also