33

自分がどの環境にいるのかを簡単に知らせる方法は何ですか? たとえば、現在の環境に応じて、以下を実行してredisに接続したいのですが、コマンドラインからこれを行うことはできますか?

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
  var r = require("redis").createClient(6379,'127.0.0.1');
});
app.configure('production', function(){
  app.use(express.errorHandler());
  r = redis.createClient(6379,'46.137.195.230', { detect_buffers: true });
});
4

5 に答える 5

29

あなたのアプローチは問題ありませんが、Redis の構成データをファイルに保存したり、引数のようなホストとポートを渡したりするなど、より一般的なものを作成できます。

node app.js REDIS_HOST REDIS_PORT

次に、アプリで process.argv を使用してそれらを取得できます。

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
  var r = require("redis").createClient(process.argv[2], process.argv[3]);
});
app.configure('production', function(){
  app.use(express.errorHandler());
  var r = require("redis").createClient(process.argv[2], process.argv[3], { detect_buffers: true });
});

アップデート:

Express は、NODE_ENV 変数 (process.env.NODE_ENV) を確認することで、現在の環境を認識します: https://github.com/visionmedia/express/blob/master/lib/application.js#L55

次のようにアプリを起動するときにその変数を設定できます:(NODE_ENV=production node app.js推奨)、Express コードの前に node アプリで process.env.NODE_ENV を手動で設定するか、Ricardo が言ったように ~/.profile にその環境変数を入れます。

于 2012-05-23T06:38:30.577 に答える
25

config.json ファイルを使用するアイデアを拡張するには、次のようにします。

// config.json
{
  "development": {
    "redisPort": 6379,
    "redisHost": "127.0.0.1",
    "errorHandlerOptions": {"dumpExceptions": true, "showStack": true}
  },
  "production": {
    "redisPort": 6379,
    "redisHost": "46.137.195.230",
    "errorHandlerOptions": {"dumpExceptions": false, "showStack": false}
  }
}

構成ファイルをロードし、env に基づいて切り替えます。

// app.js
var config = require('./config.json')[app.get('env')];
app.use(express.errorHandler(config.errorHandlerOptions));
var r = require("redis").createClient(config.redisPort,config.redisHost);

NODE_ENV=production node app.js各サーバーでNODE_ENVが設定されていることを確認してください(他の回答を参照してください。一方向:

于 2013-12-17T17:18:01.120 に答える
19

expressのドキュメントにあるように、NODE_ENV環境変数をproductionまたはに設定するだけです:http: //expressjs.com/guide.html#configurationdevelopment

NODE_ENV=developmentは開発マシン~/.profile(Linuxでは.bashrcまたはbash_profile)をそのままにして、同じことを行いproductionます。

于 2012-05-23T07:06:56.553 に答える
9

そのようなパラメーターのソースを並べ替えることで、さらに包括的なことを行いました。

    var env = process.argv[2] || process.env.NODE_ENV || 'development'
    var mongourl = process.argv[3] || process.env.NODE_DB || 'mongodb://localhost/default'
    var port = process.env.PORT || 9001

このようにして、コマンド ライン引数、env 設定、およびデフォルト値を使用できます。

于 2012-05-23T07:38:39.847 に答える