Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

sentry-miniapp

lizhiyao888MIT1.0.0TypeScript support: included

用于小程序平台的 Sentry SDK

sentry, weapp, miniapp, Sentry SDK, Sentry 小程序 SDK, 小程序 Sentry SDK, 异常监控, 异常上报, 小程序异常监控, 微信小程序

readme

Sentry Miniapp SDK

npm version npm download github forks github stars github watchers github license test coverage

基于 @sentry/core 10.5.0 的微信小程序异常监控 SDK。

注意: 1、sentry-miniapp v1.x.x 版本暂时只支持微信小程序和微信小游戏。 2、sentry-miniapp v0.x.x 版本已停止维护

特性

  • 🚀 基于最新的 Sentry JavaScript SDK 核心模块
  • 🎨 遵守 Sentry 官方统一的 API 设计文档,使用方式和官方保持一致
  • 📍 默认上报异常发生时的路由栈
  • 🎯 自动捕获小程序生命周期异常(onError、onUnhandledRejection、onPageNotFound、onMemoryWarning)
  • 🍞 自动记录面包屑(设备、用户操作、网络请求、页面导航等)
  • 🛡️ 智能错误去重和过滤机制
  • 🔧 支持在 Taro 等第三方小程序框架中使用
  • 📱 支持微信小程序和微信小游戏
  • 🔧 TypeScript 编写,提供完整的类型定义
  • 📦 支持 ES6 和 CommonJS 两种模块系统
  • 📊 完善的测试覆盖率(274+ 测试用例,覆盖核心功能模块)
  • 🔍 完整的集成测试套件

扫码体验:sentry-miniapp 使用示例小程序 sentry-miniapp 使用示例小程序

安装和使用

前置要求

  1. 使用前需要确保有可用的 Sentry Service,比如:使用 官方 Sentry Service 服务 或自己搭建 Sentry Service。如果想直接将异常信息上报到 https://sentry.io/,由于其没有备案,可以先将异常信息上报给自己已备案域名下的服务端接口,由服务端进行请求转发。
  2. 在小程序管理后台配置 Sentry Service 对应的 request 合法域名

安装依赖

推荐使用 npm 方式。

   npm install sentry-miniapp --save

重要提示

项目仓库中examples/wxapp/lib/sentry-miniapp.js 文件,也可以可以直接复制到小程序中使用。

快速开始

1. 初始化 SDK

在小程序的 app.jsapp.ts 中初始化 Sentry:

import * as Sentry from 'sentry-miniapp';

// 在 App() 之前初始化
Sentry.init({
  dsn: 'YOUR_SENTRY_DSN_HERE',
  environment: 'production', // 或 'development'
  debug: false, // 开发环境可设置为 true

  // 小程序特有配置
  platform: 'wechat', 
  enableSystemInfo: true, // 是否收集系统信息
  enableUserInteractionBreadcrumbs: true, // 是否记录用户交互面包屑
  enableConsoleBreadcrumbs: true, // 是否记录控制台日志面包屑
  enableNavigationBreadcrumbs: true, // 是否记录导航面包屑

  // 采样率配置
  sampleRate: 1.0, // 错误采样率

  // 过滤配置
  beforeSend(event) {
    // 可以在这里过滤或修改事件
    return event;
  },
});

App({
  // 你的小程序配置
});

2. 手动捕获异常

import * as Sentry from 'sentry-miniapp';

// 捕获异常
try {
  // 可能出错的代码
  throw new Error('Something went wrong!');
} catch (error) {
  Sentry.captureException(error);
}

// 捕获消息
Sentry.captureMessage('用户执行了某个操作', 'info');

// 添加面包屑
Sentry.addBreadcrumb({
  message: '用户点击了按钮',
  category: 'ui',
  level: 'info',
  data: {
    buttonId: 'submit-btn'
  }
});

// 设置用户信息
Sentry.setUser({
  id: '12345',
  username: 'john_doe',
  email: 'john@example.com'
});

// 设置标签
Sentry.setTag('page', 'home');

// 设置上下文
Sentry.setContext('character', {
  name: 'Mighty Fighter',
  age: 19,
  attack_type: 'melee'
});

贡献

欢迎通过 issuepull request 等方式贡献 sentry-miniapp

联系作者

sentry-miniapp 微信交流群

由于微信群二维码有时效性限制,想入群的同学可以加作者微信(添加时请备注 sentry-miniapp),由作者邀请入群

作者微信二维码

作者微信二维码