Meteor 流星铁路由器在本次行动之前。下一个未定义

Meteor 流星铁路由器在本次行动之前。下一个未定义,meteor,iron-router,Meteor,Iron Router,我有以下路由配置: 尝试加载路由时出现以下错误: Exception in defer callback: TypeError: undefined is not a function at manageLoadingIndicator (http://localhost:3000/both/router/routes.js?ef701fada29363a443a214f97988ce96ebaec025:30:10) at RouteController.runHooks (http://lo

我有以下路由配置:

尝试加载路由时出现以下错误:

Exception in defer callback: TypeError: undefined is not a function
at manageLoadingIndicator (http://localhost:3000/both/router/routes.js?ef701fada29363a443a214f97988ce96ebaec025:30:10)
at RouteController.runHooks (http://localhost:3000/packages/iron_router.js?da7f2ac81c3fd9daebf49ce9a6980a54caa1dc17:843:16)
at http://localhost:3000/packages/iron_router.js?da7f2ac81c3fd9daebf49ce9a6980a54caa1dc17:2302:14
at Tracker.Computation._compute (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36)
at new Tracker.Computation (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:206:10)
at Object.Tracker.autorun (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:476:11)
at http://localhost:3000/packages/iron_router.js?da7f2ac81c3fd9daebf49ce9a6980a54caa1dc17:2279:12
at Utils.extend._run.withNoStopsAllowed (http://localhost:3000/packages/iron_router.js?da7f2ac81c3fd9daebf49ce9a6980a54caa1dc17:2248:21)
at Tracker.Computation._compute (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36)
at new Tracker.Computation (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:206:10)
这是关于以下行,它位于onBeforeAction钩子中:

function manageLoadingIndicator (pause) {
  if (this.ready()) {
    Session.set('loading', false);
    this.next(); // THIS LINE HERE
  } else {
    Session.set('loading', true);
    pause();
  }
}
为什么
this.next
未定义?救命啊


Chris

您正在混合不同版本的Iron router:

在iron router 1.0之前,
onBeforeAction
将继续执行操作,除非
pause
(调用
onBeforeAction
的第一个参数。没有
.next()
方法

从1.0开始,这一点已更改。
pause()
不再作为参数传递。这是
.next()
方法替换它的地方

很明显,您运行的是旧版本的iron router,因此您的钩子应该如下所示:

function manageLoadingIndicator (pause) {
  if (this.ready()) {
    Session.set('loading', false);
  } else {
    Session.set('loading', true);
    pause();
  }
}
升级iron router后,需要将其更改为:

function manageLoadingIndicator () {
  if (this.ready()) {
    Session.set('loading', false);
    this.next();
  } else {
    Session.set('loading', true);
  }
}

我也遇到了同样的问题Chris。如果我解决了,我会告诉你的。请为我做同样的事情。Thx。谢谢你的回答。你是对的,iron router API从1.0开始改变了,但是有一段时间API不断变化,暂停参数仍然与此一起传递到回调函数中。下一步。我相信这是错误的ion 0.9.4(这是我问这个问题的时候)。我迁移了路由器设置以在1.0命中后使用此。下一步。对其他人:这包括确保所有onBeforeAction挂钩调用此。下一步。暂停路由的执行是选择退出,而不是像以前那样选择加入。