在 React 应用程序的 shell 脚本中设置环境变量

IT技术 reactjs powershell create-react-app yarnpkg
2021-05-20 03:59:47

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

1个回答

您希望使用的每个环境变量都必须按照create-react-appREACT_APP_文档添加前缀

注意:您必须创建以 REACT_APP_ 开头的自定义环境变量。除了 NODE_ENV 之外的任何其他变量都将被忽略,以避免意外暴露机器上可能具有相同名称的私钥。如果开发服务器正在运行,更改任何环境变量都将要求您重新启动它。