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

如何在Expo的app.json中正确使用EAS secret密钥变量?

问题结论

Expo 不支持直接在静态 app.json 文件中读取 EAS Secret 变量。
app.json 是纯静态 JSON 文件,EAS 流程不会在解析该文件阶段注入环境变量,直接在 JSON 中写 process.env.SENTRY_AUTH_TOKEN 会被识别为普通字符串,无法读取到实际的密钥值,自然触发配置报错。

官方支持的正确配置方案

官方的标准实现方式是使用动态配置文件替代静态 app.json,具体操作如下:

  • 将项目根目录下的 app.json 重命名为 app.config.js(使用 TypeScript 则命名为 app.config.ts),把原有静态配置改为 ESM/CommonJS 导出的对象格式。
  • EAS Secret 会在 EAS 云端构建、EAS 钩子执行阶段自动注入到运行环境的 process.env 中,动态配置文件执行时可以直接读取到对应值。
  • 针对 sentry-expo 的 postPublish 钩子配置,参考如下写法:
export default {
  expo: {
    // 此处保留原app.json内的所有配置,比如name、slug、version、plugins等
    name: "your-app-name",
    slug: "your-app-slug",
    // ...其余原有配置项
    hooks: {
      postPublish: [
        {
          file: "sentry-expo/upload-sourcemaps",
          config: {
            organization: "你的Sentry组织标识",
            project: "你的Sentry项目名",
            authToken: process.env.SENTRY_AUTH_TOKEN
          }
        }
      ]
    }
  }
}
本地调试注意事项

本地开发/调试时 EAS 不会自动把云端 Secret 注入到本地环境,需要手动拉取:

  • 执行 eas env:pull 命令,将项目关联的 EAS Secret 拉取到本地生成 .env 文件
  • 将 .env 加入 .gitignore 规则,避免密钥被提交到代码仓库
  • 拉取完成后,本地执行 expo publish、源文件上传等操作时就能正常读取到 SENTRY_AUTH_TOKEN 的值

注意:不要在静态 app.json 中硬编码密钥,也不要尝试通过字符串模板拼接环境变量,JSON 格式本身不支持执行代码逻辑,所有动态配置需求都应该通过 app.config.js/ts 实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:36:14