我尝试迁移现有的 Ember.js 项目以使用Ember App Kit
,我看到一些奇怪的错误,我认为这里不应该发生......
如果我启动应用程序,一切都已初始化,我的实用程序类已启动并运行,并且 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
}
这是堆栈跟踪:
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 本身生成的控制器,我不明白为什么(我ApplicationController
的定义在app/controllers/application.js
...
有没有人知道这种行为,或者可以告诉我正确的方向来以某种方式追踪这个错误?