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

React Native中如何让EAS Update获取Expo Dashboard密钥集成Sentry

解决EAS Update无法获取Expo Dashboard中SENTRY_AUTH_TOKEN的问题

核心原因

EAS Update 默认不会自动加载 Expo Dashboard 中存储的所有 Secrets,仅会读取本地 .env 文件中的变量;而 SENTRY_AUTH_TOKEN 属于构建/更新阶段的服务端密钥,不需要加 EXPO_PUBLIC_ 前缀(这类前缀是给客户端代码暴露变量用的)。

可行解决方案

1. 在 eas.json 中配置 Update 环境变量

这是最规范的长期方案,通过配置让 EAS Update 执行时自动从 Expo Secrets 拉取密钥:

  • 确保你已经在 Expo Dashboard 的项目 Secrets 中添加了 SENTRY_AUTH_TOKEN
  • 修改项目根目录的 eas.json,在 update 节点下的对应分支配置中注入该密钥:
    {
      "build": {
        // 保留你现有build配置
      },
      "update": {
        "preview": {
          "channel": "preview",
          "env": {
            "SENTRY_AUTH_TOKEN": "@SENTRY_AUTH_TOKEN"
          }
        },
        "production": {
          "channel": "production",
          "env": {
            "SENTRY_AUTH_TOKEN": "@SENTRY_AUTH_TOKEN"
          }
        }
      }
    }
    
  • 执行更新命令时,EAS 会自动从 Secrets 中拉取对应值注入到环境变量,后续的 npx sentry-expo-upload-sourcemaps dist 就能正常读取到 SENTRY_AUTH_TOKEN

2. 临时命令行传递(用于单次测试)

如果只是临时执行更新,可以直接在命令中通过 --env 参数指定拉取 Secrets 中的密钥:

eas update --branch preview --env SENTRY_AUTH_TOKEN=@SENTRY_AUTH_TOKEN && npx sentry-expo-upload-sourcemaps dist

3. 本地开发/测试兼容方案

如果需要本地测试 sourcemap 上传,但不想把生产密钥写入 .env:

  • 创建 .env.local 文件(务必加入 .gitignore),写入测试用的 SENTRY_AUTH_TOKEN=你的测试密钥
  • EAS Update 在本地执行时会优先读取 .env.local,远程执行时则会使用 Expo Secrets 中的生产密钥,避免敏感信息提交到版本控制

注意事项

  • SENTRY_AUTH_TOKEN 是服务端使用的密钥,绝对不要添加 EXPO_PUBLIC_ 前缀,否则会被暴露到客户端代码中
  • 执行 sentry-expo-upload-sourcemaps 必须在 eas update 完成之后,确保 dist 目录生成且环境变量已注入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:50:05