据我所知,大多数人使用“正常工作”的外部服务,然后他们在初始化程序中放入一些代码来报告错误。
在我的初始化程序中,到目前为止我有:
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/