Node.js、開発環境と本番環境の違い

本番環境と開発環境で異なる構成を設定できます。

Node.jsは、常に開発環境で実行されていると想定しています。 NODE_ENV=production 環境変数を設定することで、本番環境で実行されていることをNode.jsに伝えることができます。

これは通常、次のコマンドを実行することで行われます。

シェルで実行しますが、シェル設定ファイル(例:Bashシェルの場合は.bash_profile)に記述することをお勧めします。そうしないと、システムの再起動時に設定が保持されません。

アプリケーションの初期化コマンドの前に環境変数を付加することによっても適用できます。

この環境変数は、外部ライブラリでも広く使用されている慣例です。

環境をproductionに設定すると、一般的に次のことが保証されます。

  • ロギングが最小限の必須レベルに抑えられる
  • パフォーマンスを最適化するために、より多くのキャッシュレベルが使用される

たとえば、PugExpressで使用されるテンプレートライブラリ)は、NODE_ENVproductionに設定されていない場合、デバッグモードでコンパイルされます。Expressビューは、開発モードではすべてのリクエストでコンパイルされますが、本番環境ではキャッシュされます。他にも多くの例があります。

条件文を使用して、異なる環境でコードを実行できます。

if (process.env.NODE_ENV === 'development') {
  // ...
}

if (process.env.NODE_ENV === 'production') {
  // ...
}

if (['production', 'staging'].includes(process.env.NODE_ENV)) {
  // ...
}

たとえば、Expressアプリでは、これを使用して環境ごとに異なるエラーハンドラーを設定できます。

if (process.env.NODE_ENV === 'development') {
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
}

if (process.env.NODE_ENV === 'production') {
  app.use(express.errorHandler());
}
読書時間
2分
貢献する
このページを編集