2016-10-03 22 views
1

私は2つのミドルウェア、router1 for prodとrouter2 for testとdevを持っています。 NODE_ENVに基づいて異なるミドルウェアを使用するにはどうすればよいですか?Express.js:NODE_ENVに基づいてさまざまなミドルウェアを使用する方法は?

次のコードはどうですか?

if(process.env.NODE_ENV === 'prod') { 
    app.use('/', router1); 
} else { 
    app.use('/', router2); 
} 

もっと良い解決策はありますか? ありがとう

+1

これはあなたがそれを行う方法とまったく同じです。あなたが 'app.use( '/'、process.env.NODE_ENV === 'prod'?router1:router2);'のような1行のステートメントにそれを打ち込むことができるということを意味しますが、それはあなたが得ることができる最高です –

答えて

1

私はこのように、利用可能な環境を用意しておく必要があります(ステージングとテストが必要な場合があります)。新しいenvを追加するたびにコードを変更する必要はありませんオブジェクトに。

var routers = { 
    prod: /* declare prod router */, 
    dev: /* declare dev router */, 
}; 

app.use('/', routers[process.env.NODE_ENV] || routers.dev); 
+1

あるいはよりコンパクトです: 'app.use( '/'、routers [process.env.NODE_ENV] || routers.dev);' – Jacob

+0

@Jacobは正しいです。ちょうどスニペットを更新しました。 – ruedamanuel

関連する問題