如何在Expo构建中配置纯文本环境变量?
Expo EAS Build 环境变量返回undefined的解决方法
核心问题:客户端无法直接使用process.env
Expo iOS/Android客户端运行环境不存在Node.js的process.env对象,EAS Build注入的环境变量会被映射到Expo配置的extra字段中,需要通过expo-constants工具获取。
解决步骤
1. 安装并使用expo-constants获取变量
- 先安装依赖:
npm install expo-constants # 或 yarn add expo-constants - 在代码中读取变量:
import Constants from 'expo-constants'; const API_URL = Constants.expoConfig?.extra?.API_URL; const STRIPE_ENV = Constants.expoConfig?.extra?.STRIPE_ENV;
2. 配置app.config.js映射环境变量
需要显式将EAS注入的环境变量映射到Expo配置的extra字段,创建或修改项目根目录的app.config.js:
export default ({ config }) => { return { ...config, extra: { API_URL: process.env.API_URL, STRIPE_ENV: process.env.STRIPE_ENV, // 其他需要的环境变量 }, }; };
注意:静态的
app.json无法动态读取环境变量,建议使用app.config.js替代。
3. 验证EAS CLI版本
检查本地EAS CLI版本是否满足eas.json要求的>=3.3.1:
eas --version
版本过低则更新:
npm install -g eas-cli
4. 区分本地开发与构建环境
本地expo start不会自动加载eas.json中的环境变量,如需本地测试,可创建.env文件并在app.config.js中兼容读取:
import 'dotenv/config'; export default ({ config }) => { return { ...config, extra: { API_URL: process.env.API_URL || 'https://default-api.example.com', STRIPE_ENV: process.env.STRIPE_ENV || 'test', }, }; };
EAS Build会优先使用eas.json对应profile的env值,覆盖.env配置。
5. 重新构建验证
修改配置后重新执行构建命令:
eas build --profile development --platform ios
内容的提问来源于stack exchange,提问作者Mahesh Samudra
相关产品推荐
相关产品推荐

