どんな環境にいるのかを表現する最も簡単な方法は何ですか?例えば。私がいる環境に応じて、以下を実行して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 });
});
あなたのアプローチは大丈夫ですが、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コードの前にノードアプリでprocess.env.NODE_ENVを手動で設定するか、Ricardoが言ったようにそのenv変数を〜/ .profileに入れます。
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が設定されていることを確認してください(他の回答を1つの方法で参照してください:NODE_ENV=production node app.js
)、このように設定変数には、実行するサーバーに適した設定があります。
NODE_ENV
環境変数をproduction
またはdevelopment
に、エクスプレスのドキュメントで見られるように: http://expressjs.com/guide.html#configuration
私はただNODE_ENV=development
開発マシンの~/.profile
(Linuxでは.bashrcまたはbash_profile)、production
の場合も同じことを行います。
このようなパラメーターのソースを注文することで、さらに包括的なことを行いました。
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設定、およびデフォルト値を使用できます。
複数の構成ファイルを作成できる構成モジュールを使用します https://www.npmjs.com/package/config
例えばdefault.json、production.json
サーバーを起動します
エクスポートセットNODE_ENV = production && npm start