2017-01-06 1 views

답변

2

독서 process.env은 환경 변수를 검색하는 표준 방법입니다. the docs을 참조하십시오.

귀하가 언급 한 dotenv 패키지는 .env 파일에있는 내용을 취하여 process.env에 넣습니다. 그러나 유효성 검사가 수행되지 않으므로 실수를하기 쉽습니다.

내 실수로 모든 실수를 저지르는 나의 envy 모듈을 시험해보십시오. 다른 것들 중에서 누락 된 변수를 검사합니다.

.env하는 경우 파일은 여전히 ​​당신에게 문제를주고있다 :

  • 가 올바른 변수 이름을 사용하고 있는지 확인하십시오.
  • 오타가 없는지 확인하십시오.
  • 올바른 구문을 사용하고 있는지 확인하십시오.
  • 대신 command line arguments을 사용해보십시오. 이것을 위해 meow을 추천합니다. envy and meow together을 사용하는 예도 참조하십시오. 구문에 관한

:에 따라 당신이 (예를 들어 envydotenv) 사용 및 로더의 .env 파일의 구문은 구문 분석하는 방법에 큰 영향을 미칠 수 있습니다. 예를 들어, Bash 및 (파일을 기반으로) 다른 셸에서 다음 예 각자는

MY_VAR=foo $BAR 
MY_VAR='foo $BAR' 
MY_VAR="foo $BAR" 

또한 환경 변수 이름은 대소 문자이며 관례이다 ... 완전히 다르게 작동 모두 대문자. 이는 흔하지 않은 언어의 실수로 이어질 수 있습니다. Node.js 프로그램에서 process.env을 읽으면 환경 변수에 대한 명명 규칙이 나머지 프로그램과 다릅니다. 당신이 envy를 사용하는 경우이를 반환하기 전에 낙타 표기법하는 변수 이름을 정상화하여이를 수정으로

const myVar = process.env.myVar; // wrong 
const myVar = process.env.MY_VAR; // correct 

케이스는 문제가되지 않습니다.

const { myVar } = envy(); // correct, no matter how it is in `.env` 

에 관계없이 당신이 물론 .env 파일을 읽을 수 있습니다 전에로드 함수를 호출해야합니다, 사용 및 로더. 만 사용하기 때문에 envy()을 잊어 버리는 것은 거의 불가능합니다. 그러나 dotenv을 사용하는 경우 dotenv.config()을 호출하기 전에 이미 사용할 수 있고 채워져 있기 때문에 잘못된 시간에 process.env에 쉽게 액세스 할 수 있습니다 (그러나 원하는 모든 속성이 아님).

디버깅에 도움이되고 시간과 노력을 절약하는 또 다른 트릭은 구성을위한 전용 모듈을 만드는 것입니다. require cache 덕분에 우리는 작업을 여러 번하지 않아도되고 로더가 idempotent 인 것에 의존하지 않을 것입니다.

env.js이라는 파일에 넣으십시오.

const envy = require('envy'); 
module.exports = envy(); 

그런 다음 다른 곳으로 가져 오십시오.

const env = require('./env'); 

이제 디버깅하기가 매우 쉽고 가져온 위치와 상관없이 동일하게 작동해야합니다.

1

그냥 .env의 파일에 xxyz = HTTPSiteAddress를 추가합니다. 그런 다음 process.env.xxyz를 사용하여 아무 데나 변수를 호출 할 수 있습니다.

var request = require("request"); 

request(process.env.xxyz, function(error, response, body) { 
    console.log(body); 
}); 

이 상단에있는 한 당신의 keystone.js 파일에 포함 된대로 작동합니다 :

require('dotenv').config(); 
예를 들어

관련 문제