嗨,试着用Docker和Webpack部署我的React-App。我的问题是我想在运行时注入我的环境变量。
如果我运行我的停靠器,我希望环境ENV_TEST具有值testValue
docker run -p 8080:8080 -e ENV_TEST=testValue clientWebpack-文件:
new webpack.DefinePlugin({
"process.env.ENV_TEST": JSON.stringify(
process.env.ENV_TEST
),
}),Docker-file:
ENV ENV_TEST=defaultReact:
console.log(process.env.ENV_TEST)
//-->default目前,我的ENV_TEST的值为default (形成Docker文件,形成构建时间)。如果我没有在Docker-File中定义这个值,那么ENV_TEST就是未定义的。如果我用-e ENV_TEST=testValue运行我的停靠容器,我想用testValue值覆盖默认值。
Thx寻求任何帮助
发布于 2021-03-05 07:19:41
感谢你的回答。我最终得到了这个解决方案:https://github.com/kunokdev/cra-runtime-environment-variables
发布于 2021-03-04 23:08:52
你不能在运行时覆盖这个环境变量,因为它的运行时是客户端浏览器(我猜它是一个react应用程序)。
它的值在构建时被覆盖,从那里开始,该值被硬编码到js包中。
您可以将一个动态值传递给html,然后让您的应用程序从那里读取它。
###Edit
// index.html
<html>
...
<body>
<script>
window.TEST_ENV = '<%= EJVaraibale %>';
</script>
</body>
</html>发布于 2021-03-04 23:09:47
当我们为我们的React应用程序这样做的时候,我们编写了一个小型的express服务器,它接受index.html并通过替换我们在index.html中作为占位符放置的字符串内容来注入配置,同时构建用于生产的应用程序。
https://stackoverflow.com/questions/66477475
复制相似问题