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

Package detail

sentry-taro-miniapp

TralafalgarV54BSD-3-Clause1.0.4TypeScript support: included

用于 Taro 的 Sentry SDK

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

readme

Sentry Taro SDK

Forksentry-miniapp改造而来

用于Taro小程序的 Sentry SDK

功能特点

  • <input checked="" disabled="" type="checkbox"> 基于 sentry-javascript 最新的基础模块 封装
  • <input checked="" disabled="" type="checkbox"> 使用 TypeScript 进行编写
  • <input checked="" disabled="" type="checkbox"> 包含 Sentry SDK(如:@sentry/browser)的所有基础功能
  • <input checked="" disabled="" type="checkbox"> 支持 ES6CommonJS 两种模块系统(支持小程序原生开发方式、使用小程序框架开发方式两种开发模式下使用)
  • <input checked="" disabled="" type="checkbox"> 默认监听并上报小程序的 onError、onUnhandledRejection、onPageNotFound、onMemoryWarning 事件返回的信息(各事件支持程度与对应各小程序官方保持一致)
  • <input checked="" disabled="" type="checkbox"> 默认上报运行小程序的设备、操作系统、应用版本信息
  • <input checked="" disabled="" type="checkbox"> 支持微信小程序
  • <input checked="" disabled="" type="checkbox"> 支持在 Taro 等第三方小程序框架中使用
  • <input checked="" disabled="" type="checkbox"> 默认上报异常发生时的路由栈
  • <input disabled="" type="checkbox"> 完善的代码测试
  • <input disabled="" type="checkbox"> 支持 redux 错误上报
  • <input disabled="" type="checkbox"> 支持 webview 错误上报

用法

支持两种使用方式:

  • 直接引用
  • 通过 npm 方式使用(推荐)

注意

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

npm 方式

  1. 安装依赖

    npm install sentry-taro-miniapp --save
    # 或者
    yarn add sentry-taro-miniapp
  2. 使用「微信开发者工具 - 工具 - 构建 npm」进行构建,详情可参考npm 支持

  3. app.js 中引用并初始化 Sentry,根据实际需求设置上报到 Sentry 的元信息

    import * as Sentry from "sentry-miniapp";
    
    // init Sentry
    // init options: https://github.com/getsentry/sentry-javascript/blob/master/packages/types/src/options.ts
    Sentry.init({
      dsn: "__DSN__",
      // ...
    });
    
    // Set user information, as well as tags and further extras
    Sentry.configureScope((scope) => {
      scope.setExtra("battery", 0.7);
      scope.setTag("user_mode", "admin");
      scope.setUser({ id: "4711" });
      // scope.clear();
    });
    
    // Add a breadcrumb for future events
    Sentry.addBreadcrumb({
      message: "My Breadcrumb",
      // ...
    });
    
    // Capture exceptions, messages or manual events
    Sentry.captureException(new Error("Good bye"));
    Sentry.captureMessage("Hello, world!");
    Sentry.captureEvent({
      message: "Manual",
      stacktrace: [
        // ...
      ],
    });

开发

知识储备

开发前请仔细阅读下面内容:

sentry-core 设计图

Dashboard

sentry-hub 设计图

Dashboard

sentry-miniapp 设计图

Dashboard

相关命令

# 根据 package.json 中的版本号更新 SDK 源码中的版本号
npm run version

# 构建供小程序直接引用的 sentry-miniapp.xx.min.js;在本地可直接使用开发者工具打开 examples 下具体项目进行调试
npm run build:dist

# 构建供微信小程序直接引用的 sentry-miniapp.wx.min.js
npm run build:wx

# 构建供支付宝小程序直接引用的 sentry-miniapp.my.min.js
npm run build:my

# 构建供钉钉小程序直接引用的 sentry-miniapp.dd.min.js
npm run build:dd

# 构建供字节跳动小程序直接引用的 sentry-miniapp.tt.min.js
npm run build:tt

# 构建供百度小程序直接引用的 sentry-miniapp.swan.min.js
npm run build:swan

# 构建用于发布到 npm 的 dist 资源
npm run build

# 构建用于发布到 npm 的 esm 资源
npm run build:esm

# 发布到 npm
npm publish

效果图

Dashboard Error00 Error01 Error02

参考资料

其他小程序异常监控产品