gpt4 book ai didi

javascript - Ember.js:如何跟踪延迟操作运行时错误?

转载 作者:行者123 更新时间:2023-11-28 08:38:43 25 4
gpt4 key购买 nike

我偶尔会收到以下运行时错误。

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 代码。但错误一定是我的代码引起的。

确定导致问题的原始代码的通用方法是什么?

最佳答案

将调试器设置为在出现所有异常时停止,然后向上查看堆栈跟踪并找出触发它的代码。

这个特殊错误看起来像是您正在转换到另一条路线并且它爆炸了。在过渡期间只发生了几件事(主要是轻描淡写),我将指出会破坏过渡的大人物,它们都位于路线上。

  1. 覆盖模型 Hook
  2. 重写setupController钩子(Hook)
  3. 重写序列化 Hook

您需要查看代码并添加一些验证,以在调用 get 之前检查某个项目是否存在,或者切换到使用 Ember.get(obj, property),但是这只会将您的异常推迟到稍后。

我在 setupControllerserialize Hook 中经常看到此错误。

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');
}

这些特定区域涉及一个更大的问题,您的模型 Hook (或 transitionTo/transitionToRoute 代码)正在传递 null/空模型。

关于javascript - Ember.js:如何跟踪延迟操作运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20771644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com