Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在React应用程序的shell脚本中设置环境变量_Reactjs_Powershell_Create React App_Yarnpkg - Fatal编程技术网

Reactjs 在React应用程序的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

我试图在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
纱线
正在正确拾取端口,但没有一个变量(包括
端口
)可通过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脚本)的环境变量没有此要求。关于重新启动的部分非常有用!谢谢