Получение трассировки стека из ошибки маршрута ember

Я просмотрел эту презентацию и добавил необходимые Ember.onerror(error); к действию ошибки маршрута приложения. Однако, когда я пытаюсь зарегистрировать ошибку, я получаю то, что кажется объектом маршрута (не уверен, что это такое). Есть ли какие-то дополнительные шаги, которые мне нужно предпринять? Я использую Ember CLI v.40 и Ember v1.6.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
        };
    }
};

Я получаю в консоли следующее (созданное ember, а не мой код), это информация, которую я пытаюсь получить в инициализаторе:

Error while processing route: calendar.create

person csm232s    schedule 26.07.2014    source источник


Ответы (1)


Я использовал console.trace() в своем методе обработки ошибок маршрута.

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

Обычно это дает достаточно информации для дальнейшего отладки проблемы. Обратите внимание, что использование Em.Logger вместо console.log будет обрабатывать случай, когда в каком-то браузере не определена консоль.

person HypeXR    schedule 02.09.2014