web-dev-qa-db-ja.com

ExpressのNODE_ENVとは何ですか?

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について話しました。このコードに追加する必要がありますか?追加する方法

159
TIMEX

NODE_ENV環境変数 であり、 express ウェブサーバーフレームワークによって普及しています。ノードアプリケーションは、実行されると、環境変数の値を確認し、その値に基づいてさまざまなことを実行できます。 NODE_ENVは、特定の環境がproductionまたはdevelopment環境のどちらであるかを明示するために(慣例により)使用されています。一般的なユースケースは、開発環境で実行している場合、追加のデバッグコードまたはロギングコードを実行することです。

NODE_ENVにアクセスする

次のコードを使用して自分で環境変数にアクセスし、独自のチェックとロジックを実行できます。

var environment = process.env.NODE_ENV

あるいは、代わりにexpress 'app.get('env')note:これはデフォルトで"development"になります)

あなたの環境にNODE_ENVを明示的に設定していなければ、それはundefinedになるでしょう。

NODE_ENVを設定

実際に環境変数を設定する方法は、オペレーティングシステムによって異なり、またユーザーの設定によっても異なります。

環境変数を1回限りで設定したい場合は、コマンドラインから設定できます。

  • linux&macexport NODE_ENV=production
  • windows$env:NODE_ENV = 'production'

長期的には、再起動しても設定が解除されないようにこれを永続化する必要があります。これを実行するための可能な方法をすべてリストするのではなく、自分で実行する方法を調べてみましょう。

NODE_ENVに使用すべき値は2つのみで、productionまたはdevelopmentのいずれかで、すべて小文字です。値を追加するのをやめることは何もありませんが、私が使用している多くのnode_moduleにこの種のコードがたくさんあるので、おそらくそれはお勧めできません。

var development = process.env.NODE_ENV !== 'production';

からノードアプリケーション自体の中にNODE_ENVを設定しようとするのは本当に悪いという考えに注意してください - あなたがそうするならそれが設定されたプロセスにのみ適用されますしたがって、おそらくあなたが期待するように物事はうまくいかないでしょう。しないでください - 後悔するでしょう。

320
Ed Hinchliffe

NODE_ENVは、エクスプレスサーバーではノード環境を表す環境変数です。

それが私たちがどの環境にいるのかを設定し検出する方法です。

productiondevelopmentを使うことは非常に一般的です。

設定:

export NODE_ENV=production

Get:

app.get('env')を使って手に入れることができます

16
Alireza

最初の質問は、Expressがこの環境変数をどのように使用するかということでした。

ExpressはNODE_ENVを使用して独自のデフォルトの動作を変更します。例えば、開発モードでは、デフォルトのエラーハンドラはスタックトレースをブラウザに送り返します。プロダクションモードでは、実装の詳細が世界に漏れるのを避けるために、応答は単にInternal Server Errorです。

2
Randy Hudson