我的代码工作正常,直到昨晚,我突然收到此错误,路由根本无法正常工作。
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"
});
我无法弄清楚错误,我检查了所有路线。还有其他人遇到过这个错误吗?
答案 0 :(得分:60)
这是known issue。最新版本的Google Chrome和Microsoft Edge会出现此问题(编辑:现在也是Firefox)。
最近的铁路由器更新修复了它,它应该由meteor update iron:middleware-stack
修复。
修改:如果重新启动服务器时middleware-stack
包回滚,请检查@ bigsan的评论
答案 1 :(得分:4)
编辑:此issue已修复为铁:中间件堆栈1.1.0。
我有同样的问题。奇怪的是,我在Chrome 51上遇到了这个问题,但在Chrome 46上没有。我想这与javascript引擎中的更新有关,如果我弄清楚到底是什么,我会在这里发帖。
与此同时,我使用的解决方法是明确地为路由添加名称。它们并不重要,它们只需要声明,否则铁路由器认为路线的名称是“路线”。"所以你的代码将成为:
Router.route('/admin/dashboard', {
name: "Boaty_McBoatface",
template:"adminDashboard"
});
Router.route('/admin/create/table', {
name: "Guacamole",
template:"create_table"
});
答案 2 :(得分:0)
首先,看看here并查看何时抛出此错误。所以,实际上我没有遇到过这个错误,但我已经读过了。进一步查看official guide和post。我看到您正在尝试为路由/admin
创建一个子目录。通常,我使用this.render()
函数执行此操作。关于布局我使用this.layout()
所以我认为如果你使用这些函数并删除template:"adminDashboard"
。它会起作用。