Node.js 開発環境とプロダクション環境の制御

環境変数の取り方と環境に応じた処理の分岐

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");
});

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Node.js 開発環境とプロダクション環境の制御の記事にコメントを投稿