var app = express();
app.set('views',settings.c.WEB_PATH + '/public/templates');
app.set('view engine','ejs');
app.configure(function(){
app.use(express.favicon());
app.use(express.static(settings.c.WEB_PATH + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.methodOverride());
app.use(express.session({
cookie:{ domain:"."+settings.c.SITE_DOMAIN, maxAge:1440009999},
secret:'hamster',
store: r_store,
}));
app.use(useragent.express());
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
});
これは私のアプリです。私は現在本番で運用しています。
しかし、誰かが私にNODE_ENV
について話しました。このコードに追加する必要がありますか?追加する方法
NODE_ENV
は 環境変数 であり、 express ウェブサーバーフレームワークによって普及しています。ノードアプリケーションは、実行されると、環境変数の値を確認し、その値に基づいてさまざまなことを実行できます。 NODE_ENV
は、特定の環境がproductionまたはdevelopment環境のどちらであるかを明示するために(慣例により)使用されています。一般的なユースケースは、開発環境で実行している場合、追加のデバッグコードまたはロギングコードを実行することです。
次のコードを使用して自分で環境変数にアクセスし、独自のチェックとロジックを実行できます。
var environment = process.env.NODE_ENV
あるいは、代わりにexpress 'app.get('env')
(note:これはデフォルトで"development"
になります)
あなたの環境にNODE_ENV
を明示的に設定していなければ、それはundefined
になるでしょう。
実際に環境変数を設定する方法は、オペレーティングシステムによって異なり、またユーザーの設定によっても異なります。
環境変数を1回限りで設定したい場合は、コマンドラインから設定できます。
export NODE_ENV=production
$env:NODE_ENV = 'production'
長期的には、再起動しても設定が解除されないようにこれを永続化する必要があります。これを実行するための可能な方法をすべてリストするのではなく、自分で実行する方法を調べてみましょう。
NODE_ENV
に使用すべき値は2つのみで、production
またはdevelopment
のいずれかで、すべて小文字です。値を追加するのをやめることは何もありませんが、私が使用している多くのnode_moduleにこの種のコードがたくさんあるので、おそらくそれはお勧めできません。
var development = process.env.NODE_ENV !== 'production';
からノードアプリケーション自体の中にNODE_ENV
を設定しようとするのは本当に悪いという考えに注意してください - あなたがそうするならそれが設定されたプロセスにのみ適用されますしたがって、おそらくあなたが期待するように物事はうまくいかないでしょう。しないでください - 後悔するでしょう。
NODE_ENVは、エクスプレスサーバーではノード環境を表す環境変数です。
それが私たちがどの環境にいるのかを設定し検出する方法です。
production
とdevelopment
を使うことは非常に一般的です。
設定:
export NODE_ENV=production
Get:
app.get('env')
を使って手に入れることができます
最初の質問は、Expressがこの環境変数をどのように使用するかということでした。
ExpressはNODE_ENVを使用して独自のデフォルトの動作を変更します。例えば、開発モードでは、デフォルトのエラーハンドラはスタックトレースをブラウザに送り返します。プロダクションモードでは、実装の詳細が世界に漏れるのを避けるために、応答は単にInternal Server Error
です。