2014-07-26 104 views
2

我去了this presentation并将必要的Ember.onerror(error);添加到应用程序路由的错误操作。但是,当我尝试记录该错误时,我得到的似乎是路由对象(不知道它是什么)。我需要采取一些额外的步骤吗?我使用Ember CLI v.40和Ember v1.6.1。从余烬路由错误中获取堆栈跟踪

Error while processing route: calendar.create 

回答

1

我一直在使用:

// routes/application.js 
import Ember from 'ember'; 

export default Ember.Route.extend({ 
    actions: { 
     ... 

     error: function(error) { 
      Ember.onerror(error); 
      return true; 
     } 
    } 
}); 


// initializers/bugsnag.js 
import Ember from 'ember'; 

export default { 
    name : 'bugsnag', 
    after : 'ajax-prefilter', 

    initialize: function(container) { 
     var appController, currentRoute; 

     try { 
      appController = container.lookup('controller:application'); 
      currentRoute = appController.get('currentPath'); 
     } catch(e) {} 

     var context = { currentRoute: currentRoute }; 

     Ember.onerror = function(error) { 
      // do something with error 
      console.log(error.stack) // undefined on route error 
     }; 
    } 
}; 

我得到了在控制台下面,这是我试图在初始化来获取信息(由烬,不是我的代码生成) console.trace()在我的路由错误处理方法中。

Em.Logger.log(error.stack); 
if(! Em.isNone(console)) { 
    console.trace(); 
} 

这通常会产生足够的信息来进一步调试问题。请注意,使用Em.Logger而不是console.log,它将处理某些浏览器未定义控制台的情况。