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". Он будет работать.