如何在React应用程序中使用{{1}}中定义的环境变量?我在生产中有两个React应用程序(它们是相同的项目,因此它们具有相同的代码),但是它们需要请求不同的API主机,并且我认为env变量可以解决这个问题。
答案 0 :(得分:22)
使用webpack.DefinePlugin
。假设您在FOO
中导出BAR
和.bash_profile
,那么您的webpackconfig应如下所示:
const config = {
entry: 'somescript',
// ...
module: {
// ...
},
// ...
plugins: [
// ... your plugins
new webpack.DefinePlugin({
'process.env':{
'FOO': process.env.FOO,
'BAR': process.env.BAR
}
})
],
// ...
}
您可以通过process.env.FOO
&编译时在编译时访问js中的那些内容。 process.env.BAR
答案 1 :(得分:-1)
将环境变量存储在index.html
中!
如果将index.html
视为包含环境特定值的部署清单,则可以在每个环境中使用相同版本的资产(js,css)!
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="shortcut icon" href="https://assets.myapp.com/favicon.ico">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<link rel="manifest" href="https://assets.myapp.com/manifest.json">
<title>React App</title>
<script>
env = {
// Add your environment variables here
api: "https://staging-api.myapp.com"
};
</script>
<link href="https://assets.myapp.com/static/css/main.6bd13355.chunk.css" rel="stylesheet">
</head>
<body>
<div id="root"></div>
<script src="https://assets.myapp.com/static/js/1.a700ff87.chunk.js"></script>
<script src="https://assets.myapp.com/static/js/main.3ec5cdc6.chunk.js"></script>
</body>
</html>
在您的代码中直接引用值:myApi = window.env.api;