异常上报

info 阅读本小节前请确保你已经知道如何初始化知晓云 SDK

通过 wx.BaaS.ErrorTracker 对象,开发者可以对小程序运行中产生的错误进行上报分析,并在知晓云控制台观察特定错误影响的范围和设备数量,以便快速定位代码中的 bug,及时修复。

配置 ErrorTracker

初始化 ErrorTracker 的方式很简单,只需要在 app.js 中,调用 wx.BaaS.ErrorTracker.enable() 即可, 然后在 onError 生命周期中添加 wx.BaaS.ErrorTracker.track(res), 这样页面产生错误时,就可以自动上报了。

{% tabs pluginConf=”插件版”, fileConf=”文件版” %}

{% content “pluginConf” %}

配置 ErrorTracker — 插件版

编辑 app.js

  1. App({
  2. onLaunch: function() {
  3. wx.BaaS = requirePlugin('sdkPlugin')
  4. wx.BaaS.wxExtend(wx.login,
  5. wx.getUserInfo,
  6. wx.requestPayment)
  7. wx.BaaS.init('[[client_id]]')
  8. wx.BaaS.ErrorTracker.enable() // 初始化 ErrorTracker
  9. },
  10. onError: function(res) {
  11. // 当小程序产生错误时,会进行上报
  12. wx.BaaS.ErrorTracker.track(res)
  13. }
  14. })

{% content “fileConf” %}

配置 request 合法域名

异常上报 - 图1

配置 ErrorTracker — 文件版

编辑 app.js

  1. App({
  2. onLaunch: function() {
  3. require('./sdk-v<version>')
  4. wx.BaaS.init('[[client_id]]')
  5. let usePlugins = true // 若开发者没有使用小程序插件,可以将其设置为 false,这样即可支持其他页面自动捕获错误
  6. wx.BaaS.ErrorTracker.enable({usePlugins}) // 初始化 ErrorTracker
  7. },
  8. onError: function(res) {
  9. // 当小程序产生错误时,会进行上报
  10. wx.BaaS.ErrorTracker.track(res)
  11. }
  12. })

{% endtabs %}

更细粒度的上报错误

有时候我们需要更细粒度的上报错误信息,这时可以在 promise 的 catch 回调或者 try-catch 块中进行上报操作。

示例代码

  1. Page({
  2. verifySMSCode() {
  3. wx.BaaS.verifySmsCode({phone: '132888888', code: 123456}).then(res => {
  4. // success
  5. }).catch(err => {
  6. // 收集手机验证码错误的事件
  7. wx.BaaS.ErrorTracker.track(err)
  8. })
  9. }
  10. })

示例代码

  1. Page({
  2. onButtonClick() {
  3. try {
  4. abc() // abc 函数不存在
  5. } catch (err) {
  6. wx.BaaS.ErrorTracker.track(err)
  7. }
  8. }
  9. })

API REFERENCE

wx.BaaS.ErrorTracker.enable(opts)

初始化 ErrorTacker,注意这里必须先调用 wx.BaaS.init('[[client_id]]')

参数说明

参数名 类型 说明
opts.usePlugins boolean 小程序是否使用了插件,在插件版 SDK 中,将强制重置此参数为 true

wx.BaaS.ErrorTracker.track(err)

参数说明

参数名 类型 说明
err string / Error 对象实例 需要上报的 bug 内容