javascript - 我如何使用操作和组件来处理 Ember 的客户端错误?

标签 javascript ember.js error-handling

据我所知,大多数人使用“正常工作”的外部服务,然后他们在初始化程序中放入一些代码来报告错误。

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

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

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

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

有没有人:
- 知道一个插件可以为我做这一切(我对使用 github 以外的错误报告服务不感兴趣)
- 知道如何让 Ember.onerror 在应用程序 Controller 中触发一个 Action ,这样我就可以使用组件来呈现错误,并且更容易实现我需要的开发吗?

最佳答案

你总是可以尝试使用像 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
     }
   }
 }

关于javascript - 我如何使用操作和组件来处理 Ember 的客户端错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34209530/

相关文章:

ajax - Ember JS : How to load a second model based on data from a first

vb6 - 在 VB6 应用程序中出现缺少组件错误

javascript - 直接将服务注入(inject) AngularJS 指令 Controller

javascript - Firebug 控制台

javascript - 禁用 dx aspxbutton

ember.js - 按相关模型过滤模型 (hasMany)

google-chrome - 使用特定扩展程序启动 testem chrome 浏览器

excel - 具有多个 if 条件的 ISERROR

python - 如何在多线程 python 应用程序中创建全局错误处理程序

javascript - jquery .get/.post 在 ie 7 或 8 上不工作,在 ff 中工作正常