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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:40:27