首页 > 解决方案 > 在 React 应用程序的 shell 脚本中设置环境变量

问题描述

我正在尝试在 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 javascriptPORT中可用。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 正确设置了端口,但没有任何信息使其进入反应应用程序:

#!/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无关。

标签: reactjspowershellcreate-react-appyarnpkg

解决方案


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

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


推荐阅读