如何从JavaScript判断ReactJS是否处于开发模式?

如何从JavaScript判断ReactJS是否处于开发模式?,javascript,reactjs,Javascript,Reactjs,我正在为ReactJS写一篇文章。我想让它做一些验证,但只有在中使用ReactJS时 如何从JavaScript中确定ReactJS是处于开发模式还是生产模式?ReactJS源代码使用一个名为的变量来跟踪这一点,但它没有导出,因此无法用于Mixin 然而,它的后果是巨大的。例如,当您破坏一个不变量时,dev-mode-ReactJS将为您提供一个很好的错误描述。在生产模式下,它会给出一个通用错误,告诉您使用开发版本 我们可以使用它来构建一个函数,该函数确定React是否处于开发模式: 函数isD

我正在为ReactJS写一篇文章。我想让它做一些验证,但只有在中使用ReactJS时


如何从JavaScript中确定ReactJS是处于开发模式还是生产模式?

ReactJS源代码使用一个名为的变量来跟踪这一点,但它没有导出,因此无法用于Mixin

然而,它的后果是巨大的。例如,当您破坏一个不变量时,dev-mode-ReactJS将为您提供一个很好的错误描述。在生产模式下,它会给出一个通用错误,告诉您使用开发版本

我们可以使用它来构建一个函数,该函数确定React是否处于开发模式:

函数isDevReact(){
试一试{
React.createClass({});
}捕获(e){
如果(e.message.indexOf('render')>=0){
return true;//一条漂亮的、特定的错误消息
}否则{
返回false;//一般错误消息
}
}
return false;//不应该发生,但要小心。
};
这是因为不实现
渲染
方法的例外情况在两种模式下是不同的:

Development: "Invariant Violation: createClass(...): Class specification must implement a `render` method. Inline JSX script:16"
Production:  "Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings. Inline JSX script:16"

“render”一词是特定于我们违反的不变量的,因此它只会出现在开发版本的异常中。

您可以使用webpack设置
\uuuu dev\uuuu
变量。如果您正在编写混音,您可能不想强制用户自己重新生成ReactJS。我可以在控制台中看到“React.createClass已弃用,因为React 15.5.0”,但是消息是“\uuuu WEBPACK\u IMPORTED\u MODULE\u 0\u react\uuuuu default.a.createClass不是函数”(我使用的是启动react应用程序)。我正在搜索“react\uuuu default.a.createClass”,它可以工作,但感觉非常脆弱。