Middleware_stack.js: 31 Ошибка при отсутствии: обработчик с именем "route" уже существует. Железный маршрутизатор Метеор
Мой код работал нормально до прошлой ночи, и вдруг я получаю эту ошибку, и маршруты вообще не работают.
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"
});
Я не могу понять ошибку, я проверил все маршруты. Кто-нибудь еще столкнулся с этой ошибкой?
Ответы
Ответ 1
Это известная проблема. Проблема возникает с недавними версиями Google Chrome и Microsoft Edge (теперь редактируйте: также Firefox).
Он был исправлен недавним обновлением маршрутизатора железа, его следует исправить с помощью meteor update iron:middleware-stack
.
Изменить. Если пакет middleware-stack
откат при перезапуске сервера, отметьте комментарий @bigsan
Ответ 2
Изменить: этот issue был исправлен в железе: middleware-stack 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"
});
Ответ 3
Во-первых, посмотрите здесь и посмотрите, когда эта ошибка будет выбрана. Итак, на самом деле я не сталкивался с этой ошибкой, но я читал об этом. Кроме того, посмотрите официальное руководство и сообщение. Я вижу, что вы пытаетесь создать подкаталог вашего маршрута /admin
. Обычно я делаю это с помощью функции this.render()
. Что касается макета, я использую this.layout()
, поэтому я думаю, что если вы используете эти функции и удалите template:"adminDashboard"
. Он будет работать.