React Native Expo配合EAS Build如何读取开发及生产环境的环境变量
Expo 多环境敏感变量配置实现方案
统一读取逻辑(开发/生产代码完全复用)
你不需要为不同环境写两套读取代码,有两种官方兼容的实现方式:
process.env直接读取(Expo SDK 49+ 支持)
所有环境变量名称添加EXPO_PUBLIC_前缀,全环境直接通过process.env.EXPO_PUBLIC_XXX读取,无需额外依赖配置。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 --saveapp.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
相关产品推荐
相关产品推荐

