middleware_stack.js:31 Uncaught Error: Handler with name 'route' already exists. Iron router Meteor

middleware_stack.js:31 Uncaught Error: Handler with name 'route' already exists. Iron router Meteor

直到昨晚我的代码都运行良好,突然出现此错误并且路由根本无法运行。

middleware_stack.js:31Uncaught Error: Handler with name 'route' already exists.

对于像这样的简单路线:

Router.route('/admin/dashboard', {
   template:"adminDashboard"
});

Router.route('/admin/create/table', {
  template:"create_table"
});

我无法找出错误,我已经检查了所有的路线。还有其他人遇到过这个错误吗?

先来看看here and see when this error is thrown. So, actually I have not faced that error but I've read about it. Further have a look at the official guide and post。我看到您正在尝试为您的路线 /admin 创建一个子目录。通常,我通过使用 this.render() 函数来做到这一点。关于我使用 this.layout() 的布局,所以我认为如果您使用这些功能并删除 template:"adminDashboard"。它会起作用。

编辑:此 issue 已在 iron:middleware-stack 1.1.0 中修复。

我也遇到了同样的问题。奇怪的是,我在 Chrome 51 上遇到了这个问题,但在 Chrome 46 上没有。我想这与 javascript 引擎中的更新有关,我会在这里 post如果我弄清楚到底是什么。

与此同时,我使用的解决方法是明确地向路由添加名称。它们是什么并不重要,它们只需要被声明,否则 iron-router 认为路由的名称是 "route." 所以你的代码将变成:

Router.route('/admin/dashboard', {
   name: "Boaty_McBoatface",
   template:"adminDashboard"
});

Router.route('/admin/create/table', {
   name: "Guacamole",
   template:"create_table"
});

这是一个known issue。最近版本的 Google Chrome 和 Microsoft Edge(编辑:现在还有 Firefox)会出现此问题。

它已被最近的 iron 路由器更新修复,它应该被 meteor update iron:middleware-stack 修复。

编辑:如果重启服务器后middleware-stack包回滚,查看@bigsan的评论