Weex 异常监控

发布于 2022-09-30 23:11:16 字数 1486 浏览 41 评论 0

需要做 Weex 容器内的异常监控。基于 Vue 的一些可以被监控到,但是有些错误是被 Weex 源码所捕获,比如 Promise,各位有做过的话,这类问题是如何解决的?

// 获取当前的叶子节点
function formatComponentName(vm) {
  if (vm.$root === vm) return 'root';
  var name = vm._isVue
      ? (vm.$options && vm.$options.name) ||
      (vm.$options && vm.$options._componentTag)
      : vm.name;
  return (
      (name ? 'component <' + name + '>' : 'anonymous component') +
      (vm._isVue && vm.$options && vm.$options.__file
          ? ' at ' + (vm.$options && vm.$options.__file)
          : '')
  );
}

// 错误处理
Vue.config.errorHandler = (err, vm, info) => {
  // logger.toServer({err, vm, info})
  let componentName = 'not found';
  if (vm) {
    componentName = formatComponentName(vm);
  }
  let errorInfo = `\n------------------------weex monitor--------------------
  method: errorHandler
  name: ${err.name}
  message: ${err.message}
  callstack:${err.stack}`

  console.error(`\n错误信息:${errorInfo}
  发生错误的组件:${componentName}
  具体信息:${info}\n`)
}


Vue.config.warnHandler = (msg, vm, trace) => {
  let componentName = 'not found';
  if (vm) {
    componentName = formatComponentName(vm);
  }
  let message = `\n\nmessage:${msg} \n\ncomponent:${componentName}\n\ntrace:${trace}`;
  console.error(`警告信息:${message}`)
}

App.el = '#root'
App.renderError = (h, err) => {
  console.error(`renderError:${h}, ${JSON.stringify(err)}`)
}
/* eslint-disable no-new */
new Vue(App)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文