Reactjs 在React应用程序的shell脚本中设置环境变量
我试图在powershell(和bash)脚本中设置一些环境变量,并在ReactJS应用程序中读取它们。shell脚本很简单:Reactjs 在React应用程序的shell脚本中设置环境变量,reactjs,powershell,create-react-app,yarnpkg,Reactjs,Powershell,Create React App,Yarnpkg,我试图在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-Child
$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
纱线
正在正确拾取端口,但没有一个变量(包括端口
)可通过javascript中的process.env
获得
console.log("domain : " + process.env.AUTHDOMAIN);
...
domain : undefined App.js:33
我的package.json
文件没有MOD:
"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亿次)-Thread正确设置了端口,但没有任何信息进入react应用程序:
#!/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无关。您希望使用的每个环境变量都必须以
REACT\u APP\uucode>
根据:
注意:您必须创建以REACT\u APP\u开头的自定义环境变量。除了NODE_ENV之外的任何其他变量都将被忽略,以避免在机器上意外地公开可能具有相同名称的私钥。更改任何环境变量都需要重新启动正在运行的开发服务器
这只是一个背景问题吗?如果在系统上下文而不是当前用户中设置变量,是否会得到不同的结果?您的意思是通过[Environment]::SetEnvironmentVariable()
?我宁愿不那样做。作为记录,我做了完全相同的事情,将环境变量加载到golang api中,api认为它们很好。事实上,在我杀死服务器后,环境变量确实会在环境中持续存在,这有点麻烦。您需要重新加载进程外壳来加载环境更改,例如:@iRon我认为这些都不适用。这是powershell而不是cmd.exe,环境变量肯定正在设置中(如Get ChildItem所示),同样的设置也适用于使用环境变量的golang应用程序。我不希望VAR是系统范围的,只是脚本过程的本地版本。我刚刚发现了这一点-谢谢!值得注意的是,如上所述,发送到Thread(react脚本)的环境变量没有此要求。关于重新启动的部分非常有用!谢谢