node.js v0.8.14
express v3.0.3
環境変数 NODE_ENV
express は、アプリケーションの実行環境を、app.settings.env の値で判断しています。
app.settings.env は、 expressアプリケーション実行時に、環境変数 NODE_ENV の値で初期化されます。(環境変数 NODE_ENV が定義されていない場合は、'development' で初期化します。)
以下のコマンドで、アプリケーションの実行時に環境を指定できます。
$ export NODE_ENV=production && node app.js
app.configure で環境ごとの設定
app.configure では、1番目の引数で設定を反映させる環境を, 2番目の引数で設定用コールバックを指定します。
1番目の値が実際の環境( NODE_ENV, app.settings.env )と一致するときのみ、第2引数のコールバックを実行します。
また、 引数にコールバックのみ渡した場合は、すべての環境で設定用コールバックが呼び出されます。
app.js
//全環境共通の設定 app.configure(function(){ }); //開発環境用の設定 app.configure('development', function(){ }); //本番環境用の設定 app.configure('production', function(){ });
サンプル
express コマンドで生成した app.js を確認すると、development 環境のみの設定として、errorHandler ミドルウェア を呼び出しています。
app.js
app.configure('development', function(){ app.use(express.errorHandler()); });
このミドルウェアは、エラー内容をフォーマットしてレスポンスで返してくれるため、開発時には非常に役に立ちます。
しかし、本番環境で実行してしまうと、アプリケーションの内部情報をユーザーに表示させることになってしまうため、開発環境のみに限定した設定となっています。
そのため、本番環境では、エラー時には専用のエラーページを表示させる、などの対策が必要になります。
app.js
app.configure('development', function(){ app.use(express.errorHandler()); }); app.configure('production', function(){ app.use(function(err, req, res, next){ console.error(err.stack); res.status(500); res.render('500', {title: "エラーが発生しました。"}); }); })
まとめ
express アプリケーションの環境は、環境変数 NODE_ENV で設定する。
app.configure() で、環境ごとの設定を定義する。
0 件のコメント:
コメントを投稿