繁体   English   中英

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

[英]Setting environment variables in a shell script for a React app

我正在尝试在 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正确获取,但没有任何变量(包括PORT )通过 React javascript 中的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 无关。

根据 create-react-app文档,您希望使用的每个环境变量都必须以REACT_APP_为前缀:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM