Javascript 如何将仅编译时的全局变量传递给代码?

Javascript 如何将仅编译时的全局变量传递给代码?,javascript,reactjs,webpack,environment-variables,Javascript,Reactjs,Webpack,Environment Variables,我想检查代码是否在开发模式下运行,然后,例如,将redux devtools enchancer传递给redux存储。以及其他类似案件。我知道我可以使用process.env.NODE\u env,但它太冗长了。我还可以在不同的模块中将其写入变量一次,然后将其导出。但是,在我看来,只导入一个变量而模块只有一个变量是不合理的。我想要实现的完美解决方案是全局访问该变量,而无需在代码中导入或声明该变量,并在编译时动态替换该变量,使其仅为字符串,即“development”,而不是process.env

我想检查代码是否在开发模式下运行,然后,例如,将redux devtools enchancer传递给redux存储。以及其他类似案件。我知道我可以使用
process.env.NODE\u env
,但它太冗长了。我还可以在不同的模块中将其写入变量一次,然后将其导出。但是,在我看来,只导入一个变量而模块只有一个变量是不合理的。我想要实现的完美解决方案是全局访问该变量,而无需在代码中导入或声明该变量,并在编译时动态替换该变量,使其仅为字符串,即
“development”
,而不是
process.env.NODE\u env
。我想要的一个很好的例子是React代码库中的“pseudo global”变量。那么我如何才能做到这一点呢?提前谢谢。

我找到了解决办法。我需要的是网页包装

//webpack.confg.js
const webpack=require('webpack');
//...
module.exports=(环境,argv)=>({
//...
插件:[
//...
新的webpack.DefinePlugin({
是_DEV:argv.mode!=“生产”
})
]
})

如果您真的认为它太冗长,可以使用
窗口
对象或
全局
并为其指定env值
window.myVar=process.env.NODE\u env
。但是为什么你认为它太冗长了?@JohnRuddell我不是说它真的很冗长,我是说我不想重复我自己,到处写
process.env.NODE_env
,而不是例如
IS_DEV
,就是这样。将变量写入窗口。。。我认为这真的是一个愚蠢的代码。我宁愿使用webpack来实现这一点。您可以通过process.env获得环境。你试着用了多少次?同样,这并不冗长,您应该在一些启动脚本中使用该变量,仅此而已。写出来有什么不对?我尝试将process.env变量别名为monkey code。哇,这是一个很小的回答,我没有把你的问题标记为困惑,但谢谢你假设我这么做了。我真的希望你在处理这件事上能做得最好,请记住我们应该遵守一个原则,也许花几分钟读一下。使用
环境
变量是完全可以接受的做法,请确保您的问题清楚。。正如您没有提到要使用/定义您自己的环境变量,而是要在代码中创建一个可以将其导出的模块。也许这让人困惑:)