我正在尝试在 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但在 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 无关。