243

これは、現在本番環境で実行している私のアプリです。

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、それを使いたいと思っています. これどうやってするの?

4

4 に答える 4

454

NODE_ENVExpress Web サーバー フレームワークによって普及した環境変数です。ノード アプリケーションが実行されると、環境変数の値を確認し、その値に基づいてさまざまなことを行うことができます。具体的には、特定の環境が本番環境か開発環境かを示すために (慣例により) 使用されます。一般的な使用例は、開発環境で実行している場合に、追加のデバッグ コードまたはログ コードを実行することです。NODE_ENV

NODE_ENV へのアクセス

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

var environment = process.env.NODE_ENV

値がわからない場合は、本番環境を想定してください。

var isDevelopment = environment === 'development'

if (isDevelopment) {
  setUpMoreVerboseLogging()
}

または、エクスプレス関数を使用することもできますが、これは推奨されないapp.get('env')ことに注意してください。これは、デフォルトで に設定されているため、開発コードが本番環境で誤って実行される可能性があるためです。この重要な値が設定されていない場合にアプリがエラーをスローした場合は、はるかに安全です。 (または、必要に応じて、デフォルトで上記のプロダクション ロジックを使用します)。"development"

NODE_ENV環境に明示的に設定していない場合undefinedは、からアクセスするとprocess.env、デフォルトがないことに注意してください。

NODE_ENV の設定

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

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

  • Linux & マック:export NODE_ENV=production
  • :$env:NODE_ENV = 'production'

長期的には、再起動しても設定が解除されないように、これを保持する必要があります。これを行うためのすべての可能な方法をリストするのではなく、自分で行う方法を検索させてください!

NODE_ENV慣習により、 に使用する必要がある 2 つの「主な」値があることが規定されていproductionますdevelopment。他の値を使用することを妨げるものは何もありません (testたとえば、自動テストを実行するときに別のロジックを使用したい場合) 'production''development'すぐにはわからない副作用があるかもしれません。

最後に、ノード アプリケーション自体から設定しようとするのは非常に悪い考えであることに注意してNODE_ENVください。設定すると、設定元のプロセスにのみ適用されるため、期待どおりに動作しない可能性があります。それらへ。それをしないでください - あなたはそれを後悔します.

于 2013-06-07T08:27:44.890 に答える
28

NODE_ENVはExpress サーバーのノード環境を表す環境変数です。

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

productionとを使用するのは非常に一般的developmentです。

設定:

export NODE_ENV=production

得る:

を使用して取得できますapp.get('env')

于 2017-10-08T00:54:02.003 に答える