meteor iron-router

middleware_stack.js: 31 Error no detectado: el controlador con el nombre ''ruta'' ya existe. Enrutador de hierro Meteor



iron-router (3)

Editar: este problema se corrigió en iron: middleware-stack 1.1.0.

Tengo el mismo problema. Extrañamente, tengo este problema en Chrome 51 pero no en Chrome 46. Supongo que esto tiene que ver con las actualizaciones en el motor de JavaScript, y publicaré aquí si averiguo exactamente qué.

Mientras tanto, la solución alternativa que utilicé fue agregar explícitamente nombres a las rutas. No importa lo que sean, solo tienen que declararse; de ​​lo contrario, iron-router piensa que el nombre de la ruta es "ruta". Entonces tu código se convertiría en:

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

Mi código funcionaba bien hasta la noche anterior y, de repente, recibo este error y las rutas no funcionan en absoluto.

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

para rutas simples como esta:

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

No puedo entender el error, he verificado todas las rutas. ¿Alguien más ha enfrentado este error?


Este es un problema conocido . El problema ocurre con las versiones recientes de Google Chrome y Microsoft Edge (edite: también Firefox ahora).

Ha sido arreglado por una reciente actualización de enrutador de hierro, debe ser arreglado por meteor update iron:middleware-stack .

Editar : si el paquete middleware-stack revierte al reiniciar el servidor, consulte el comentario de @ bigsan


Primero, eche un vistazo aquí y vea cuándo se produce este error. Entonces, en realidad no me he enfrentado a ese error, pero lo he leído. Además, eche un vistazo a la guía oficial y la publicación . Veo que estás tratando de crear un subdirectorio para tu ruta /admin . Por lo general, hago esto usando la función this.render() . En cuanto al diseño, utilizo this.layout() así que creo que si utilizas estas funciones y eliminas la template:"adminDashboard" . Funcionará.