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

Expo预览构建中Sentry无法记录事件,但开发模式正常

问题概述

在Expo托管工作流中使用sentry-expo@~7.0.0,本地开发模式、expo start --no-dev --minify模式下Sentry都能正常捕获事件,但通过EAS构建预览版后,Sentry初始化成功(onReady触发),beforeSend也能捕获到事件,但事件完全没出现在Sentry后台面板中。

依赖配置

"dependencies": {
  "sentry-expo": "~7.0.0",
  "expo": "^52.0.27",
}

Sentry初始化代码

import * as Sentry from '@sentry/react-native';
import { Alert } from 'react-native';

Sentry.init({
  dsn: 'https://a18559a4e743489f8b57247563fe3..........',
  enableInExpoDevelopment: true,
  debug: true,  // 开启调试但无错误日志输出
  enableAutoSessionTracking: true,
  onReady: (props) => Alert.alert('Sentry Ready'),  // 弹窗出现,确认初始化成功
  beforeSend(event) {
    Alert.alert("🔥 Event being sent to Sentry:", JSON.stringify(event, null, 2));
    return event;
  },
});

// 测试错误日志
Sentry.captureException(new Error("Test error from preview build"));

已确认现象

  • expo start运行时,事件正常同步到Sentry后台
  • expo start --no-dev --minify运行时同样正常
  • 预览构建中Sentry初始化完成,beforeSend触发确认事件已被捕获,但后台无记录

可能的原因及修复方案

1. 检查EAS构建的环境变量配置

EAS预览构建可能未正确注入Sentry配置,导致事件无法正常发送:

  • 在eas.json的预览环境中添加Sentry相关环境变量:
{
  "build": {
    "preview": {
      "env": {
        "SENTRY_DSN": "https://a18559a4e743489f8b57247563fe3..........",
        "SENTRY_ENVIRONMENT": "preview"
      }
    }
  }
}
  • 初始化时优先读取环境变量(避免硬编码可能的构建替换问题):
dsn: process.env.SENTRY_DSN || '你的备用DSN',
environment: process.env.SENTRY_ENVIRONMENT || 'production'

2. 关联Sentry Release与构建版本

EAS构建会生成唯一的Release版本,Sentry需要正确关联才能显示事件:

  • 在app.json中配置发布通道:
{
  "expo": {
    "releaseChannel": "preview"
  }
}
  • 初始化时指定Release标识(需导入expo-constants):
import Constants from 'expo-constants';

Sentry.init({
  // ...其他配置
  release: `${Constants.expoConfig.version}@${Constants.expoConfig.releaseChannel}`
});

3. 检查Sentry后台的过滤规则

可能后台的环境过滤隐藏了预览版事件:

  • 登录Sentry后台,进入项目【Settings】→【Filters】,检查是否有针对preview环境的过滤规则
  • 在事件列表中切换环境选项,确认是否选中了preview(默认可能只显示production环境)

4. 验证设备网络与权限

预览设备可能无法访问Sentry API:

  • 测试设备能否正常访问你的DSN对应的域名(如https://sentry.io/)
  • 安卓设备需确认app.json中包含网络权限:
{
  "expo": {
    "android": {
      "permissions": ["INTERNET"]
    }
  }
}

5. 排查版本兼容性

当前sentry-expo@~7.0.0可能与Expo 52存在适配问题,尝试升级到兼容版本:

npm install sentry-expo@latest

(Expo 52推荐的sentry-expo版本通常为^8.0.0及以上)

6. 查看设备日志定位发送失败原因

开启debug: true后,预览构建的日志需通过设备查看:

  • iOS:使用Xcode控制台搜索sentry相关日志
  • 安卓:执行adb logcat | grep sentry命令,查看是否有发送失败的错误(如401未授权、网络超时等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:34:51