環境変数の取り方と環境に応じた処理の分岐
Expressのapp.get(‘env’)
Node.js + Expressで開発環境と本番環境で条件分岐する。本記事は、Node.js0.10.28 + Express3.10.5の環境で試した例です。
development値の取得
Expressのapp.get(‘env’)でデフォルトだと”development”という値を得ることが可能。console.log()で出力するだけのコードを書くと以下のようになる。
var http = require('http'); var express = require('express'); var app = express(); console.log(app.get('env')); http.createServer(app).listen(3000, function(){ console.log("Express server started"); });
コマンドプロンプトで実行するとdevelopmentと表示される。
C:\Express>node environment
development
Express server started
NODE_ENV
app.get(‘env’)にはデフォルトでdevelomentが設定されていることが分かった。そして、この値を制御することで、開発環境とプロダクション環境の処理を分岐することができる。
app.get(‘env’)で取得できる値を変更するためには、NODE_ENVという値を変更する。
C:\Express>set NODE_ENV=production
Windows環境の場合は、コマンドプロンプトでsetすることで、Unix環境でexportするように、NODE_ENVの値を変更することができる。
開発環境と本番環境の振り分け
NODE_ENVで環境変数を制御することができるので、値に応じて処理を分岐することが可能。
var http = require('http'); var express = require('express'); var app = express(); if (app.get('env') == 'production') { app.get('/', function(req, res) { res.send('production'); }); } if (app.get('env') == 'development') { app.use(express.errorHandler({ dumpExceptions: true })); app.get('/', function(req, res) { res.send('development'); }); } http.createServer(app).listen(3000, function(){ console.log("Express server started"); });