reactjs - 反应在开发中工作的环境变量,而不是在部署到 netlify
问题描述
在我的 PC 上一切正常,但在我部署到 netlify 后,我的环境变量未定义。这就是我在该州所拥有的。
let apikey;
if(process.env.NODE_ENV !== 'production') {
apikey = process.env.REACT_APP_APIKEY;
console.log(apikey);
} else {
apikey = process.env.APIKEY;
console.log(apikey);
}
然而仍然不确定:)
解决方案
在 netlify 中,除非您在构建期间将它们构建到脚本中,否则您将无法访问客户端的环境变量。这就是为什么您不应该在客户端脚本的构建中存储密钥的原因。
Netlify 上没有服务器端,除非使用函数。如果您使用的是 Netlify 函数(lambda 函数),那么通过管理 UI 访问环境变量设置不会有问题。
在大多数情况下,只有构建环境知道并且可以使用环境变量,因为它们是在构建过程中在 shell 中设置的,但是您的代码不是从构建环境提供的 - 它在构建后无需修改即可提供。
将您的 REACT_APP_APIKEY 存储在 Netlify 构建环境变量中,并在运行构建命令之前使用脚本构建 .env。
脚本/create-env.js
const fs = require('fs')
fs.writeFileSync('./.env',`REACT_APP_APIKEY=${process.env.REACT_APP_APIKEY}`)
将脚本作为构建的一部分运行
node ./scripts/create-env.js
推荐阅读
- ios - UILabel 在 UIStackView 中提前中断
- deprecated - JSF 2.3、CDI 2.0 | com.sun.faces.flow.FlowDiscoveryCDIHelper 类已从 CDI 1.1 中弃用
- go - 我的程序有什么错误?我已经使用这些值了吗?
- floating-point - 是否可以仅使用整数算术打印浮点数?
- java - 使用安全破解游戏的方法
- vba - VBA根据cell1中的文本在cell1下方插入文本(文本/单元格变量;在范围内)
- python - 无法将 Python 连接到 Oracle
- asp.net - 混合自定义和默认模型绑定
- c - 使用 AVX 功能时崩溃
- python - 拟合线性回归模型中的值误差