gpt4 book ai didi

ember.js - Ember应用工具包:Router#updatePaths引发TypeError

转载 作者:行者123 更新时间:2023-12-02 06:10:21 26 4
gpt4 key购买 nike

我尝试迁移现有的Ember.js项目以使用Ember App Kit,我看到一些奇怪的错误,我认为这不应该在这里发生...

如果我启动该应用程序,则一切都将初始化,我的util类已启动并正在运行,并且Ajax请求已发送和接收-一切似乎都很好。但是,然后我一遍又一遍地得到相同的错误:

Uncaught TypeError: Cannot read property 'name' of undefined

如果我遵循StackTrace,我会发现 updatePaths()Router函数中发生了错误(我在代码开始失败的行上进行了注释:
function updatePaths(router) {
var appController = router.container.lookup('controller:application');

if (!appController) {
// appController might not exist when top-level loading/error
// substates have been entered since ApplicationRoute hasn't
// actually been entered at that point.
return;
}

var infos = router.router.currentHandlerInfos, // <-- empty Array ([])
path = Ember.Router._routePath(infos); // <-- empty String ("")

if (!('currentPath' in appController)) {
defineProperty(appController, 'currentPath');
}

set(appController, 'currentPath', path);

if (!('currentRouteName' in appController)) {
defineProperty(appController, 'currentRouteName');
}

set(appController, 'currentRouteName', infos[infos.length - 1].name); // throws Uncaught TypeError: Cannot read property 'name' of undefined
}

这是StackTrace:
Uncaught TypeError: Cannot read property 'name' of undefined      ember.js:35015
updatePaths ember.js:35015
Ember.Router.Ember.Object.extend.intermediateTransitionTo ember.js:34522
(anonymous function) ember.js:34919
forEachRouteAbove ember.js:34869
defaultActionHandlers.loading ember.js:34915
triggerEvent ember.js:34983
trigger ember.js:34116
Transition.trigger ember.js:33952
Ember.Router.Ember.Object.extend._fireLoadingEvent ember.js:34750
DeferredActionQueues.flush ember.js:5893
Backburner.end ember.js:5984
Backburner.run ember.js:6023
Ember.run ember.js:6426
runInitialize ember.js:39637
jQuery.Callbacks.fire jquery.js:3063
jQuery.Callbacks.self.fireWith jquery.js:3175
jQuery.extend.ready jquery.js:3381
completed jquery.js:3397

而且, appController似乎不是我的 ApplicationController实例,而是从ember本身生成的 Controller ,我不明白为什么(我的 ApplicationController是在 app/controllers/application.js中定义的...

是否有人对此行为有任何了解,或者可以向我显示正确的方向以某种方式查找此错误?

最佳答案

因此,我更深入地研究了该错误,并在issue上找到了一个GitHub project,它也描述了我认为也是我的问题的地方。

事实证明,Ember App Kit(甚至Ember本身)正在吞噬Ember.assert等引发的消息/错误,因此我遵循了Stefan Penner的建议,并在浏览器开发工具和我的捕获到的异常上切换到暂停看到这不是一个错误,而是几个错误!

不幸的是,所有这些错误都静默地失败,直到无法再捕获到最后一个错误,这就是为什么每个错误都显示相同的堆栈跟踪信息的原因...

因此,解决方案似乎是要确保pause on caught exceptions并找到Ember.assert()中的错误消息……其他人也看到了相同的问题,并提出了其他建议还是可以批准我的结论?

Chrome开发者工具中“暂停捕获的异常”的屏幕截图:

enter image description here

关于ember.js - Ember应用工具包:Router#updatePaths引发TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680469/

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