Node.js에서 환경 변수 읽기


답변:


1879
process.env.ENV_VARIABLE

ENV_VARIABLE액세스하려는 변수의 이름은 어디에 있습니까 ?

대한 Node.js 문서를process.env 참조하십시오 .


4
이는 노드 프로세스 및 해당 서브 프로세스 외부에서는 보이지 않습니다. 예를 들어 env, 노드 프로세스가 실행되는 동안 다른 노드에서 실행되거나 노드 프로세스가 종료 된 후에 동일한 쉘에서 실행되면 보이지 않습니다 .
Marko Bonaci

17
변수를 할당 할 때도 작동합니다. process.env.FOO = "foo";공장.
병아리

16
이것이 React 애플리케이션에서 작동하지 않는다는 것을 언급 할 가치가 있습니다. process.env보안상의 이유로 위생 처리됩니다. 로 시작하는 변수 만 REACT_ENV_사용할 수 있습니다. 참조 : github.com/facebookincubator/create-react-app/blob/master/…
Mark Edington

7
@MarkEdington 나는 그렇게 생각합니다REACT_APP_
Mr. 14

5
@ Mr.14 맞아! REACT_APP_ 아닙니다 REACT_ENV_
Mark Edington

133

Node.js 를 사용할 때 process.env객체 에서 키로 환경 변수를 검색 할 수 있습니다 .

예를 들어

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

다음은 node.js에서 환경 변수 설정 을 설명하는 답변입니다.


위의 process.env 메소드를 사용하려면 어떤 lib가 필요합니까?
user_mda

3
@user_mda process.env는 node.js API에 내장되어 있습니다.
Jason Axelson

process.env에서 원하는 것을 설정합니까? node.js가 요구하는 구성 객체와 달리 왜 사람들이 그것을 설정합니까?
PDN

3
process.env를 사용하면 운영 체제 수준에서 설정된 환경 변수에 액세스 할 수 있습니다. 이들은 다양한 방법으로 설정 될 수 있으며 앱을 배포하는 위치에 따라 다릅니다. 예를 들어, NODE_ENV = development NODE_PATH = lib node server.js를 사용하여 로컬 앱을 자주 실행합니다. 그러면 process.env.NODE_PATH는 'lib'를 반환합니다
NectarSoft

57

Node.js 프로그램에서 생성 된 문자열 키 (예 :) var v = 'HOME'를 사용하려면을 사용할 수 있습니다 process.env[v].

그렇지 않으면 process.env.VARNAME프로그램에서 하드 코딩해야합니다.


process.env['HOME']있니?
AlgoRythm

35

Node.JS에서 환경 변수를 검색하려면 process.env.VARIABLE_NAME 을 사용할 수 있지만 process.env 에 속성을 할당하면 값이 문자열로 암시 적으로 변환된다는 것을 잊지 마십시오.

부울 논리를 피하십시오

.env 파일이 SHOULD_SEND = false 또는 SHOULD_SEND = 0 과 같은 변수를 정의하더라도 값은 문자열 (각각 "false"및 "0" )로 변환되며 부울로 해석되지 않습니다.

if (process.env.SHOULD_SEND) {
 mailer.send();
} else {
  console.log("this won't be reached with values like false and 0");
}

대신 명시 적으로 확인해야합니다. 환경 이름에 따라 먼 길을 찾았습니다.

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });

1
명시 적으로 확인 해야하는 부울 환경 변수에 'yes'와 'no'를 사용하고 싶습니다. 이것은 많은 프로그래밍 언어에서 문제를 피합니다.
Dogweather

22

당신은 사용할 수 있습니다 ENV 프로젝트에 따라 환경 변수를 관리하기 위해 패키지를 :

  • .env프로젝트 디렉토리 아래 에 파일을 작성하고 모든 변수를 거기에 두십시오.
  • 응용 프로그램 입력 파일 맨 위에 다음 줄을 추가하십시오.
    require('dotenv').config();

끝난. 이제를 사용하여 환경 변수에 액세스 할 수 있습니다 process.env.ENV_NAME.


9
dotenv 패키지는 유용하지만 process.env.ENV_VARIABLE을 읽으면 질문에 대한 답변을 얻을 수 있습니다. dovenv 패키지는 파일에서 환경으로 설정을로드하는 것입니다.
Robert Patterson

그것은 내 요점입니다 : env라이브러리 에서 env 변수를 관리하고로드하십시오 .
Huy Vo

1
envdir유틸리티를 사용하여 non-node.js 특정 방식으로 동일한 작업을 수행 할 수 있습니다 .
Chris Johnson

github.com/bitrise-io/envman 과 유사 하지만 node특정 하지 않습니다 .
MarkHu

1
당신은 내 하루를했다! 고마워요!
Vaha

0

.bash_profile파일 의 Users 디렉토리에서 파일을 사용하지 않아도되므로 변수가있는 파일을 프로덕션으로 푸시 할 필요가 없습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.