我偶尔会遇到以下运行时错误。
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 :(得分:0)
将调试器设置为在所有异常上停止,然后向上走堆栈跟踪并找出你的代码正在触发它。
这个特殊的错误看起来像你正在转换到另一条路线并且它爆炸了。在过渡过程中只发生了一些事情(主要的轻描淡写),我会指出会破坏过渡的大元素,它们都位于路线上。
model
hook setupController
hook serialize
hook 您需要查看代码,并在调用get之前添加一个项目存在的验证,或者切换到使用Ember.get(obj, property)
,但这只会推迟您的异常直到稍后。< / p>
我在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
代码)正在传递null / empty模型。