我正在尝试在Powershell(和Bash)脚本中设置一些环境变量,并在ReactJS应用程序中读取它们。脚本很简单:
Original Answer翻译成"最初的回答"
$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
正确获取,但是在React JavaScript中,包括PORT
在内的所有变量都无法通过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正确设置端口,但没有任何信息传递到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无关。最初的回答。
[Environment]::SetEnvironmentVariable()
吗?我宁愿不这样做。就记录而言,我用完全相同的方法将环境变量加载到golang api中,并且api可以很好地识别它们。 - undefined