Javascript 反应+;网页:';process.env';是未定义的
我正在尝试用webpack在我们的站点上运行热开发服务器;该站点使用ReactJS,其中包含以下代码:Javascript 反应+;网页:';process.env';是未定义的,javascript,reactjs,webpack,Javascript,Reactjs,Webpack,我正在尝试用webpack在我们的站点上运行热开发服务器;该站点使用ReactJS,其中包含以下代码: if (\"production\" !== process.env.NODE_ENV) // etc 不运行热插拔时可以,但使用热插拔时,它会运行,从而导致错误: TypeError: process.env is undefined 代码如下所示: 该项目是建模的,然后才开始工作;所以问题是,;我在配置文件中犯了什么错误和/或在“生产”编译工作正常时如何查找错误 我已经发布了。在您的
if (\"production\" !== process.env.NODE_ENV) // etc
不运行热插拔时可以,但使用热插拔时,它会运行,从而导致错误:
TypeError: process.env is undefined
代码如下所示:
该项目是建模的,然后才开始工作;所以问题是,;我在配置文件中犯了什么错误和/或在“生产”编译工作正常时如何查找错误
我已经发布了。在您的网页配置中,有两个选项会影响
进程.env
:
- (见附件)
process.env
在options.prerender
和options.minimize
都为false
时可能未定义
您可以通过始终使用定义
process.env
(例如:node
)的环境,或通过使用DefinePlugin
为自己的变量指定默认值来解决此问题 这个答案对我来说更有意义。为其他同样需要完整示例的人发布
这是最简单的方法:
new webpack.EnvironmentPlugin( { ...process.env } )
将其添加到您的webpack插件列表中。当您使用webpack打包服务器端应用程序(
target:'node'
)时,DefinePlugin
似乎覆盖了添加到其中的process.env
i.s.o。我在阅读Heroku env时遇到了麻烦。变量process.env.PORT
,直到我从我的网页配置中删除了DefinePlugin
。我在.env文件中定义了我的env变量,不知道为什么这些变量在我的代码中没有定义。原来我还需要在我的网页包配置中包含newwebpack.DefinePlugin({“process.env”:{NODE_env:JSON.stringify(“production”)}),
!非常感谢。那很有帮助,是的!非常感谢。看了你的例子后,我意识到我在heroku上运行webpack,而我只需要在我的开发机器上运行它。热插拔的是什么<代码>热开发服务器
?指向Webpack文档,其中指出,process.env
不应再用于前端。这对我来说很有效。。。除此之外,如果您的环境中有密钥或机密,您可能希望更加明确,因为这会拉取所有内容。在docker中,您需要拉取所有内容,如果您没有“docker”,那么您就不会在2018年:是的,您真的不应该这样做,否则您可能最终会泄漏机密。