本番環境と開発環境の検出実行時の反応


103

Reactの現在のバージョンが実行時に開発か本番かを検出することは可能ですか?私はこのようなことをしたいです:

if (React.isDevelopment) {
  // Development thing
} else {
  // Real thing
}

回答:


167

これは、ビルドツール(webpack、browserify)でNodeの方法をエミュレートして公開するのが最適process.env.NODE_ENVです。通常、prodでは「本番」に設定し、devでは「開発」(または未定義)に設定します。

したがって、コードは次のようになります。

if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
    // dev code
} else {
    // production code
}

設定方法については、envifyまたはwebpackでの環境依存変数の受け渡しを参照してください。


これは私がインストールされていた後、私のために働いたbrowserifyenvify
pfhayes 2016年

4
process is not definedクライアントで。
trusktr 2018

5
webpackのようなビルドツールを使用する必要があります。
David L. Walsh

8
create-react-appを使用している場合はprocess.env.NODE_ENV、開発モードで「開発」されます。
Joseph2 3819

3
@ Joseph238のコメントに追加する-create-react-appを使用する場合、process.env.NODE_ENVが定義され、アプリ内のどこからでもアクセスできます。詳細については、Reactのドキュメントを参照してください
ShaungCheng19年

9

私はヘルパーファイル(Typescript内)を使用しています:

import process from "process";

const development: boolean = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';

export default function isDev(): boolean
{
    return development;
}

それから他の場所で私はそれをこのように使用します:

import isDev from "./helpers/DevDetect";

if (isDev())
{
    ...
}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.