如何利用操作和组件来处理Ember的客户端错误?

时间:2015-12-10 18:52:44

标签: javascript ember.js error-handling

从我所看到的情况来看,大多数人都使用“只是工作”的外部服务。然后他们在初始化程序中输入一些代码来报告错误。

在我的初始化程序中,到目前为止我有:

Ember.onerror = function(error) {
  displayError(error);
};

displayError显示错误通知(类似于Atom编辑器的错误通知)

但是当我试图为我的displayError函数添加功能(附加多个错误,关闭一个/所有,显示堆栈跟踪,最终将问题发布到github等)时,我发现它&# 39;回到vanilla javascript非常麻烦,我想知道是否有办法利用ember报告我的应用程序中发生的错误。

有没有人:
- 了解一个为我做这一切的插件(我对使用除github之外的错误报告服务不感兴趣)
- 了解让Ember.onerror触发应用程序控制器中的操作的方法,以便我可以使用组件来呈现错误,并且可以更轻松地实现我需要的开发吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Ember.Instrumentation之类的内容。

这将允许您从Ember.onerror回调内部触发一个事件,您可以在应用中的任何其他位置订阅该事件。因此,假设您创建了一个位于应用程序根目录的组件。然后,您可以将该组件订阅到错误事件,并触发何时显示错误。 Ember.instrument()还允许您传递可以作为错误对象本身的有效负载。

在您应用的根目录中,您可以使用以下内容:

Ember.onerror = function(error) {
  Ember.Instrumentation.instrument("app.error", error);
};

然后在您的组件中,您可以订阅init函数中的事件,如下所示:

 init: function() {
   Ember.Instrumentation.subscribe("app.error", {
     before: function(name, timestamp, payload) {
       // do logic here with error
     },
     after: function() {
       // optional cleanup work here
     }
   }
 }