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

How do I utilize actions and components to handle client side errors with Ember?

本文关键字:Ember 处理 客户端 错误 组件 何利用 操作      更新时间:2023-09-26

据我所见,大多数人使用"刚刚工作"的外部服务,然后在初始化器中插入一些代码来报告错误。

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

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

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

但是,当我试图为displayError函数添加功能(附加多个错误、关闭一个/全部、显示stacktrace、最终将问题发布到github等)时,我发现回到普通的javascript非常麻烦,我想知道是否有一种方法可以利用ember来报告我的应用程序中发生的错误。

是否有人:
-知道有一个插件可以为我做这一切(我对使用github以外的错误报告服务不感兴趣)
-知道一种让Ember.onerror在应用程序控制器中触发操作的方法吗?这样我就可以使用组件来呈现错误,并且可以更容易地开发实现我需要的东西?

您可以随时尝试使用Ember.Instrumentation.之类的东西

这将允许您从Ember.oneror回调中启动一个事件,您可以订阅应用程序中的其他任何位置。假设您创建了一个位于应用程序根目录下的组件。然后,您可以将该组件订阅到错误事件,并触发何时显示错误。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
     }
   }
 }