수색…


환경 변수 액세스

process.env 속성은 사용자 환경을 포함하는 객체를 반환합니다.

다음과 같은 객체를 반환합니다.

{
  TERM: 'xterm-256color',
  SHELL: '/usr/local/bin/bash',
  USER: 'maciej',
  PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
  PWD: '/Users/maciej',
  EDITOR: 'vim',
  SHLVL: '1',
  HOME: '/Users/maciej',
  LOGNAME: 'maciej',
  _: '/usr/local/bin/node'
}
process.env.HOME // '/Users/maciej'

환경 변수 FOOfoobar 설정하면 다음과 같이 액세스 할 수 있습니다.

process.env.FOO // 'foobar' 

process.argv 명령 줄 인수

process.argv 는 명령 행 인수가 들어있는 배열입니다. 첫 번째 요소는 node 이고, 두 번째 요소는 JavaScript 파일의 이름입니다. 다음 요소는 추가 명령 줄 인수가됩니다.

코드 예제 :

모든 명령 행 인수의 출력 합계

index.js

var sum = 0;
for (i = 2; i < process.argv.length; i++) {
    sum += Number(process.argv[i]);
}

console.log(sum);

사용예요 :

node index.js 2 5 6 7

출력은 20

코드에 대한 간단한 설명 :

여기서 for 루프 for (i = 2; i < process.argv.length; i++) 루프는 2로 시작합니다. process.argv 배열의 처음 두 요소는 항상 ['path/to/node.exe', 'path/to/js/file', ...]

process.argv 배열의 요소는 항상 string이므로 Number(process.argv[i]) 변환

dev / qa, staging 등과 같은 다양한 환경에서 다른 속성 / 구성 사용

대규모 응용 프로그램은 다른 환경에서 실행될 때 종종 다른 속성을 필요로합니다. NodeJs 응용 프로그램에 인수를 전달하고 노드 프로세스에서 동일한 인수를 사용하여 특정 환경 속성 파일을로드함으로써이 작업을 수행 할 수 있습니다.

서로 다른 환경에 대한 두 개의 등록 정보 파일이 있다고 가정합니다.


  • dev.json

      {
          PORT : 3000,
          DB : {
              host : "localhost",
              user : "bob",
              password : "12345"
          }
      }
    
  • qa.json

      {
              PORT : 3001,
              DB : {
                  host : "where_db_is_hosted",
                  user : "bob",
                  password : "54321"
              }
      }
    

응용 프로그램의 다음 코드는 사용할 각 속성 파일을 내보낼 것입니다.

코드가 environment.js에 있다고 가정합니다.

process.argv.forEach(function (val, index, array) {
    var arg = val.split("=");
    if (arg.length > 0) {
        if (arg[0] === 'env') {
            var env = require('./' + arg[1] + '.json');
            module.exports = env;
        }
    }
});

우리는 다음과 같이 응용 프로그램에 인수를 제공합니다.

node app.js env=dev

우리가 프로세스 관리자를 영원히 좋아하는 것처럼 사용한다면

forever start app.js env=dev

구성 파일을 사용하는 방법

 var env= require("environment.js");

"속성 파일"에서 환경 속성로드

  • 속성 판독기 설치 :
npm install properties-reader --save
  • 속성 파일을 저장할 디렉토리 env 를 만듭니다.
mkdir env
  • environments.js 만들기 :
process.argv.forEach(function (val, index, array) {
    var arg = val.split("=");
    if (arg.length > 0) {
        if (arg[0] === 'env') {
            var env = require('./env/' + arg[1] + '.properties');
            module.exports = env;
        }
    }
});
  • 샘플 development.properties 등록 정보 파일 :
# Dev properties
[main]
# Application port to run the node server
app.port=8080

[database]
# Database connection to mysql
mysql.host=localhost
mysql.port=2500
...
  • 로드 된 속성의 샘플 사용법 :
var enviorment = require('./environments');
var PropertiesReader = require('properties-reader');
var properties = new PropertiesReader(enviorment);
   
var someVal = properties.get('main.app.port');
  • 고속 서버 시작
npm start env=development

또는

npm start env=production


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow