Expo本地集成Sentry异常,enableNative设值均失效,求本地错误测试方案
解决 Expo 本地 Sentry 运行故障并测试错误
故障原因说明
- 设
enableNative: true报错:Expo Go 本地开发环境未预集成 Sentry 原生 SDK,找不到原生客户端实例 - 设
enableNative: false警告:JS 端 Sentry 初始化后,默认会尝试拉取原生 SDK 信息,同时未启用原生时部分事件会被拦截
适配本地开发的配置调整
修改 Sentry 初始化代码,区分开发/生产环境,同时禁用原生信息自动检索以消除警告:
import * as Sentry from 'sentry-expo'; import Constants from 'expo-constants'; Sentry.init({ dsn: SENTRY_DSN, environment: Constants.manifest.releaseChannel || 'development', enableNative: __DEV__ ? false : true, // 本地开发禁用原生,生产环境启用 debug: __DEV__, enableNativeNagger: false, // 关闭原生缺失提示 });
本地测试错误的具体方法
- 手动触发 JS 错误:在任意组件中添加测试代码,触发后即可验证捕获效果:
const testSentryCapture = () => { throw new Error('测试 Sentry JS 错误捕获'); }; - 验证捕获状态:开启
debug: true后,查看 Metro 终端日志,若出现Event sent successfully字样,说明 JS 端捕获正常 - 查看错误数据:打开 Sentry 后台对应项目的
development环境,即可看到捕获到的测试错误
额外注意事项
- 必须使用
sent-expo包而非普通@sentry/react-native,前者专为 Expo 生态优化 - 本地开发无需手动集成原生 Sentry SDK,Expo 生产构建(
eas build)会自动处理原生端集成
内容的提问来源于stack exchange,提问作者rap-2-h
相关产品推荐
相关产品推荐

