[英]Setting environment variables in a shell script for a React app
我正在尝试在 powershell(和 bash)脚本中设置一些环境变量,并在 ReactJS 应用程序中读取它们。 shell 脚本很简单:
$env:AUTHDOMAIN="some.domain.com"
$env:AUTHCLIENTID="bunch-o-characters"
$env:AUTHCALLBACK="http://somewhere:3002/callback"
$env:AUTHAUDIENCE="auth-audience"
$env:PORT=3002
# Get-ChildItem Env:
yarn start
端口被yarn
正确获取,但没有任何变量(包括PORT
)通过 React javascript 中的process.env
可用。
console.log("domain : " + process.env.AUTHDOMAIN);
...
domain : undefined App.js:33
我的package.json
文件没有修改:
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
我错过了什么? Get-ChildItem
显示变量在环境中设置正确。
编辑:我尝试了此处列出的解决方案,但它不起作用。 它还阻止终端接收任何输出:
$ ($env:AUTHDOMAIN="some.domain.com") -and (yarn start)
结果一样。
编辑#2:值得注意的是,Linux/bash 中的行为完全相同(这是一个很好的试金石测试,因为我已经在 bash 中完成了大约 1000 亿次)- yarn 正确设置了端口,但没有任何信息使其进入反应应用程序:
#!/bin/sh
export AUTHDOMAIN="some.domain.com"
export AUTHCLIENTID="bunch-o-text"
export AUTHCALLBACK="http://somewhere:3001/callback"
export AUTHAUDIENCE="auth-audience"
export PORT=3002
yarn start
所以这可能与 powershell 无关。
根据 create-react-app的文档,您希望使用的每个环境变量都必须以REACT_APP_
为前缀:
注意:您必须创建以 REACT_APP_ 开头的自定义环境变量。 除了 NODE_ENV 之外的任何其他变量都将被忽略,以避免意外暴露机器上可能具有相同名称的私钥。 如果开发服务器正在运行,更改任何环境变量都将要求您重新启动它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.