reactjs - 在 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无关。
解决方案
您希望使用的每个环境变量都必须按照create-react-appREACT_APP_
的文档添加前缀:
注意:您必须创建以 REACT_APP_ 开头的自定义环境变量。除了 NODE_ENV 之外的任何其他变量都将被忽略,以避免在机器上意外暴露可能具有相同名称的私钥。更改任何环境变量都需要您重新启动正在运行的开发服务器。
推荐阅读
- jmeter - 100个用户同时上传文件jmeter
- mysql - 查找具有多个唯一值的列
- javascript - TypeError: test.describe is not a function when using nodejs, selenium and mocha
- android - 在关闭 android 应用程序后使用监听器
- java - 处理器内核和线程数
- javascript - java.sql.SQLSyntaxErrorException: ORA-01722: 尝试使用 jquery ajax jsp 删除检查值时无效数字
- r - Lintr - 有没有办法抑制大写的数据框列名警告?
- c++ - 如何捕获从 MFC Web 浏览器 C++ 发出的 GET/POST 请求
- java - 为对象创建一个通用构建器,而不考虑传入的字段
- sql - 使用 WHERE 和 AS 从 DB 中提取数据