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

如何使用EAS Secrets配置Expo项目环境变量?生产构建异常排查

Expo环境变量配置问题解答

不需要在app.json和eas.json里重复声明环境变量,但你的当前配置存在几个可能导致生产APK请求失败的问题,逐一排查:

1. app.config.js结构错误

你把eas节点嵌套在了extra里面,这是不对的。eas应该和name、slug等顶级配置同级,正确写法如下:

import "dotenv/config";

module.exports = () => {
  return {
    name: "MyApp-V2",
    slug: "MyApp-V2",
    scheme: "msauth.com.myapp",
    extra: {
        ENDPOINT_URL: process.env.ENDPOINT_URL,
        CLIENT_ID: process.env.CLIENT_ID,
        // 其他所有环境变量...
    },
    eas: {
      projectId: "***",
    },
  };
};

这个结构错误会导致EAS构建时无法正确解析配置,进而影响环境变量的注入。

2. 确认EAS Secrets的环境覆盖

你用eas secret:push --scope project推送的项目级密钥,默认会覆盖所有构建环境,但最好手动去EAS后台检查:每个变量的环境范围是否包含production,变量名是否和你在app.config.js里用的完全一致(大小写敏感)。

3. 生产构建配置缺失

你的eas.json里production构建项是空的,建议补充Android构建类型配置,不然生产构建可能不会生成可测试的APK:

"production": {
  "android": {
    "buildType": "apk"
  }
}

4. 代码中读取环境变量的正确方式

开发环境下用process.env能直接取到变量,但生产打包后,原生环境里没有process.env,必须用expo-constants读取:

import Constants from 'expo-constants';

// 示例:读取接口地址
const apiUrl = Constants.expoConfig.extra.ENDPOINT_URL;

这是绝大多数人踩坑的点,也是你生产环境请求失败的核心原因之一。

最后总结

  • 不用在app.json/eas.json重复声明环境变量
  • 先修正app.config.js的结构错误
  • 确认EAS Secrets在生产环境可用
  • 代码里改用expo-constants读取变量
  • 补全eas.json的生产构建配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:15:04