[node.js] 검색 할 노드의 환경 변수 설정

튜토리얼을 따르려고하는데 다음과 같이 말합니다.

자격 증명을로드하는 몇 가지 방법이 있습니다.

  1. 환경 변수에서로드
  2. 디스크의 JSON 파일에서로드

키는 다음과 같아야합니다.

USER_ID, USER_KEY

… 즉, 환경 변수를 올바르게 설정하면 응용 프로그램에서 자격 증명을 전혀 관리 할 필요가 없습니다.

일부 인터넷 검색을 기반으로 process.env? 에서 변수를 설정 해야하는 것으로 보입니다 . 이 자격 증명을 어떻게 그리고 어디에 설정합니까? 예를 들어주세요.



답변

환경 변수 (이 경우)는 자격 증명을 응용 프로그램에 전달하는 데 사용됩니다. USER_ID그리고 USER_KEY모두에서 액세스 할 수 process.env.USER_IDprocess.env.USER_KEY각각. 편집 할 필요가 없으며 컨텐츠에 액세스하면됩니다.

그들은 단순히로드 사이에 당신에게 선택권을주는 것 같습니다 USER_IDUSER_KEY중 하나에서 process.env디스크의 일부를, 지정된 파일이나.

이제 마술은 응용 프로그램을 실행할 때 발생합니다.

USER_ID=239482 USER_KEY=foobar node app.js

사용자 ID 239482와 사용자 키를로 전달합니다 foobar. 테스트에는 적합하지만 프로덕션 환경에서는 변수를 내보내도록 일부 bash 스크립트를 구성하고있을 것입니다.


답변

dotenv 패키지를 살펴 보는 것이 좋습니다.

https://github.com/motdotla/dotenv

@ Benxamin의 답변에서 제안 된 라이브러리와 비슷하지만 훨씬 깨끗하고 bash 스크립트가 필요하지 않습니다. 또한 코드 기반이 널리 사용되고 유지 관리된다는 점에 주목할 가치가 있습니다.

기본적으로 .env 파일이 필요합니다 (git / mercurial / etc에서 무시하는 것이 좋습니다).

FOO=bar
BAZ=bob

그런 다음 응용 프로그램 항목 파일에 가능한 빨리 다음 줄을 입력하십시오.

require('dotenv').config();

팔. 끝난. ‘process.env’는 이제 위 변수를 포함합니다 :

console.log(process.env.FOO);
// bar

‘.env’파일은 필요하지 않으므로 앱이 없을 때 앱이 넘어 질까 걱정할 필요가 없습니다.


답변

명령 줄에 env 값을 제공하십시오.

USER_ID='abc' USER_KEY='def' node app.js


답변

다음과 같이 프로세스 글로벌 변수를 통해 환경 변수를 설정할 수 있습니다.

process.env['NODE_ENV'] = 'production';

모든 플랫폼에서 작동합니다.


답변

관리 옵션을 원하면 envs npm 패키지를 사용해보십시오 . 설정된 경우 환경 값을 반환합니다. 그렇지 않으면, 환경에 있지 않은 경우 전역 기본값 오브젝트 변수에 저장되는 기본값을 지정할 수 있습니다.

사용 .env의를 파일 ( “점 EE-KO-V 시리즈를”) 또는 환경은 여러 가지 이유로 좋다. 개인은 자신의 구성을 관리 할 수 ​​있습니다. 고유 한 환경 설정을 사용하여 다양한 환경 (dev, stage, prod)을 클라우드 서비스에 배포 할 수 있습니다. 합리적인 기본값을 설정할 수 있습니다.

.env파일 안에 각 줄은 다음 예제와 같은 항목입니다.

NODE_ENV=development
API_URL=http://api.domain.com
TRANSLATION_API_URL=/translations/
GA_UA=987654321-0
NEW_RELIC_KEY=hi-mom
SOME_TOKEN=asdfasdfasdf
SOME_OTHER_TOKEN=zxcvzxcvzxcv

버전 관리 저장소에 파일 을 포함 시키지 않아야 .env합니다 ( .gitignore파일에 추가 ).

에서 변수를 가져 오려면 .env파일 환경으로 bash 스크립트를 사용 export NODE_ENV=development하여 응용 프로그램을 시작하기 직전에 동등한 작업을 수행 할 수 있습니다 .

#!/bin/bash
while read line; do export "$line";
done <source .env

그런 다음 응용 프로그램 자바 스크립트에갑니다.

var envs = require('envs');

// If NODE_ENV is not set, 
// then this application will assume it's prod by default.
app.set('environment', envs('NODE_ENV', 'production'));

// Usage examples:
app.set('ga_account', envs('GA_UA'));
app.set('nr_browser_key', envs('NEW_RELIC_BROWSER_KEY'));
app.set('other', envs('SOME_OTHER_TOKEN));


답변

운영 체제와 쉘에 따라 다릅니다.

쉘 bash는 리눅스 , 당신은 (콘솔에서)이 같은 환경 변수를 만들 :

export FOO=bar

우분투 환경 변수에 대한 자세한 정보 (예 🙂

우분투 환경 변수


답변

ctrlplusb가 말했듯이 package을 사용하는 것이 좋지만 dotenv이것을 수행하는 또 다른 방법은 js 파일을 만들고 앱 서버의 첫 번째 줄에 파일을 요구하는 것입니다.

env.js :

process.env.VAR1="Some value"
process.env.VAR2="Another Value"

app.js :

require('env')
console.log(process.env.VAR1) // Some value