You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目两种方式读取环境变量均返回undefined如何解决

问题原因与修复方案

你两种方式都读取到undefined的核心原因是:使用react-scripts启动的Create React App脚手架项目,默认会自动过滤所有不带REACT_APP_前缀的自定义环境变量,避免服务器端敏感变量意外泄露到前端浏览器代码中。

第一种(env-cmd方式)修复步骤

  • 将.env.development文件内的变量全部添加REACT_APP_前缀:
REACT_APP_BACKEND_PROTOCOL = http
REACT_APP_BACKEND_DOMAIN = localhost
REACT_APP_BACKEND_PORT = 4000
  • 代码中读取变量时同步添加前缀:
console.log(`${process.env.REACT_APP_BACKEND_PROTOCOL}://${process.env.REACT_APP_BACKEND_DOMAIN}:${process.env.REACT_APP_BACKEND_PORT}`);
console.log(process.env.REACT_APP_BACKEND_PROTOCOL);
  • 无需修改启动命令,保持env-cmd -f .env.development react-scripts start即可,重启开发服务器后就能正常读取变量。

第二种(dotenv方式)修复说明

  • Create React App已经内置了dotenv支持,不需要手动安装dotenv模块、也不需要手动导入调用config方法,额外的安装调用会和内置逻辑冲突。
  • 你只需要把.env文件内的变量同样添加REACT_APP_前缀,代码中对应加前缀读取,直接执行react-scripts start启动项目就能正常取值。

注意事项

  • 环境变量修改后必须重启开发服务器才会生效,不支持热更新。
  • 所有带REACT_APP_前缀的变量最终都会被打包到前端静态代码中,不要在其中存储密钥、密码等敏感信息。

内容的提问来源于stack exchange,提问作者José Carlos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:54:02