サーチ…


環境変数へのアクセス

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 、2番目の要素は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で始まりfor (i = 2; i < process.argv.length; i++)なぜなら、process.argv配列の最初の2つの要素は常に ['path/to/node.exe', 'path/to/js/file', ...]

process.argv配列内の要素は常に stringであるため、 Number(process.argv[i])変換する

dev、qa、stagingなどの異なる環境に異なるプロパティ/設定を使用する

大規模なアプリケーションでは、異なる環境で動作させるときに異なるプロパティが必要になることがよくあります。 NodeJsアプリケーションに引数を渡し、特定の環境プロパティファイルをロードするためにノードプロセスで同じ引数を使用することで、これを実現できます。

異なる環境に2つのプロパティファイルがあるとします。


  • 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