是否有可能在运行时检测当前版本的React是开发版还是生产版?我想做这样的事情:
if (React.isDevelopment) {
// Development thing
} else {
// Real thing
}
Answers:
最好通过暴露的方式使用构建工具-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或传递与环境相关的变量
process is not defined
在客户端上。
process.env.NODE_ENV
将在开发模式下进行“开发”。
process.env.NODE_ENV
将为您定义,您可以在应用程序中的任何位置访问它。有关详细信息,请参见React文档。
我使用帮助文件(在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())
{
...
}
我想从index.html访问此文件,并希望找到一种不涉及弹出webpack或使用其他模块进行配置的解决方案,于是我想到了这一点。
来源是上述David的回答以及在html文件中使用环境变量的create-react-app文档。
if ( ! '%NODE_ENV%' || '%NODE_ENV%' === 'development') {
// dev code
} else {
// production code
}
browserify
和,这对我就起作用了envify
。