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

React Native Expo配合EAS Build如何读取开发及生产环境的环境变量

Expo 多环境敏感变量配置实现方案

统一读取逻辑(开发/生产代码完全复用)

你不需要为不同环境写两套读取代码,有两种官方兼容的实现方式:

  1. process.env 直接读取(Expo SDK 49+ 支持)
    所有环境变量名称添加EXPO_PUBLIC_前缀,全环境直接通过process.env.EXPO_PUBLIC_XXX读取,无需额外依赖配置。
  2. expo-constants 通用读取(兼容所有SDK版本)
    安装依赖后通过Constants.expoConfig.extra.XXX统一读取,适配性更强。

开发环境配置

  • 项目根目录新建.env文件,写入你的敏感变量:
    # 用process.env直接读取的写法
    EXPO_PUBLIC_SECRET_KEY=开发环境密钥
    # 用expo-constants读取的写法
    SECRET_KEY=开发环境密钥
    
  • 将.env加入.gitignore,避免提交到代码仓库泄露信息。
  • 如果使用expo-constants方案,先安装依赖:
    npm install expo-constants dotenv --save
    
    然后修改项目根目录的app.config.js(如果是app.json要先改成js格式):
    require('dotenv').config()
    module.exports = {
      // 其他原有配置保持不变
      extra: {
        secretKey: process.env.SECRET_KEY
      }
    }
    
    代码中统一读取逻辑:
    import Constants from 'expo-constants';
    const SECRET_KEY = Constants.expoConfig.extra.secretKey;
    

生产EAS Build配置

  • 将生产环境的敏感变量添加到EAS Secret中,变量名和开发环境.env中的名称保持完全一致即可,EAS构建时会自动将Secret注入到构建环境的process.env中。
  • 无需修改任何业务代码,构建后读取的就是生产环境的变量值。

安全最佳实践

  • 客户端本质是不可信环境,所有打包到客户端的密钥都存在被反编译获取的风险。如果是高敏感的第三方服务密钥,建议不要直接下发到客户端,改为通过自有后端代理请求,密钥仅保存在后端服务中,从根源上避免泄露。
  • 不要在日志、报错信息中打印敏感变量值,避免调试时意外泄露。

内容的提问来源于stack exchange,提问作者markmccoid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:45:03