2013-12-25 3 views
1

Иногда я получаю следующую ошибку времени выполнения.Ember.js: Как отслеживать ошибки времени отложенного действия?

Assertion failed: Error while loading route: TypeError: Cannot call method 'get' of undefined ember.js?body=1:3226 
    (anonymous function) ember.js?body=1:3226 
    defaultActionHandlers.error ember.js?body=1:32032 
    triggerEvent ember.js?body=1:31884 
    trigger ember.js?body=1:30910 
    Transition.trigger ember.js?body=1:30131 
    handleError ember.js?body=1:31244 
    invokeCallback ember.js?body=1:8377 
    (anonymous function) ember.js?body=1:8431 
    EventTarget.trigger ember.js?body=1:8200 
    (anonymous function) ember.js?body=1:8502 
    DeferredActionQueues.flush ember.js?body=1:5674 
    Backburner.end ember.js?body=1:5765 
    Backburner.run ember.js?body=1:5804 
    executeTimers ember.js?body=1:6056 
    (anonymous function) ember.js?body=1:5914 

Проблема в том, что весь стек вызовов - это код ember. Но ошибка должна быть вызвана моим кодом.

Что такое общий подход для определения исходного кода, вызывающего проблему?

ответ

0

Установите ваш отладчик для остановки во всех исключениях, затем поднимите трассировку стека и узнайте, какой ваш код стреляет в него.

Эта конкретная ошибка выглядит так, будто вы переходили на другой маршрут, и это взорвалось. Во время перехода есть всего несколько вещей (значительное преуменьшение), я укажу на тех гигантов, которые нарушили бы переход, все они расположены на маршруте.

  1. переопределены model крючок
  2. переопределены setupController крючок
  3. переопределены serialize крючок

Вы хотите просмотреть свой код и добавить либо добавить некоторую проверку, что элемент существует, прежде чем вы вызываете получить на нем или переключиться на использование Ember.get(obj, property), но это просто отталкивает ваше исключение до более позднего времени.

Я вижу эту ошибку много в крючках setupController и serialize.

serialize: function(model){ 
    // good spot to fail 
    return { custom_id: model.get('some_id') }; 
} 

setupController: function(controller, model){ 
    // good spot to fail 
    var something = model.get('something'); 
} 

Этих конкретные области говорят на более серьезную проблему, ваша модель крюк (или transitionTo/transitionToRoute код) проходит нулевую/пустую модель.

Смежные вопросы