5

ember.js 社区对报告 Ember 应用程序崩溃的建议是什么?我正在寻找 Rails 中的 exception_notifier gem 的等效项,以便在用户遇到错误时通知我。

这篇Stack Overflow 帖子推荐了通用的 javascript 错误处理解决方案,包括:

  • 处理好window.onerror自己
  • 使用window.onerror为您处理的托管服务,例如Airbrake.ioMuscula

我希望有某种 Mixin 可以为您提供所有这些错误处理代码,并提供更丰富的错误消息(例如发生错误时的当前路由等)。这还存在吗?如果没有,人们正在做什么来解决这个问题?

4

1 回答 1

5

像 Rails gem 这样的任何错误报告都将依赖于某种服务器后端来处理错误,例如向管理员发送电子邮件等。Rails 将有一个专门用于此类事情的整个 gem 是有道理的,因为 Rails 正在拥有整个堆栈跟踪、会话和各种其他方便(/必要)用于调试问题的变量,但对于前端应用程序(例如 Ember),所有错误信息都在客户端,因此,所有后端逻辑都会公开一个 API,您的 Ember 应用程序可以与之通信,该 API 将转发您从应用程序发送给它的任何信息,并将其发送到您的电子邮件,或者您想用它做什么。

要在 Ember 中执行此操作,您可以指定Ember.onerror函数:

Ember.onerror = function(error) {
  caught = error; 
  Em.$.ajax('/report-error', 'POST', {
     stack: error.stack,
     otherInformation: 'whatever app state you want to provide'
  });
};

这将接收抛出的 JavaScriptError对象,该对象可能具有也可能不具有包含堆栈跟踪的非标准stack属性,您可以在要发送的任何其他特定于应用程序的状态中发送到服务器,尽管您会可能希望保持简单,以免导致其他错误并最终陷入来自地狱的疯狂错误循环。

于 2013-01-16T00:19:48.590 回答