在运行时检测生产与开发React


103

是否有可能在运行时检测当前版本的React是开发版还是生产版?我想做这样的事情:

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

Answers:


166

最好通过暴露的方式使用构建工具-webpack,browserify-模拟Node的工作方式process.env.NODE_ENV。通常,您会在prod中将其设置为“生产”,在dev中将其设置为“开发”(或未定义)。

因此,您的代码变为:

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

有关如何设置它,请参阅在webpack中envize传递与环境相关的变量


一旦我安装了browserify和,这对我就起作用了envify
pfhayes

4
process is not defined在客户端上。
trusktr '18

5
您需要使用诸如webpack之类的构建工具。
大卫·沃尔什

8
如果您使用create-react-app,process.env.NODE_ENV将在开发模式下进行“开发”。
Joseph238

3
添加到@ Joseph238的注释-使用create-react-app时,process.env.NODE_ENV将为您定义,您可以在应用程序中的任何位置访问它。有关详细信息,请参见React文档
升城

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())
{
    ...
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.