Ember.js: No se puede establecer la ruta de 'error' en 2.10

Creado en 29 nov. 2016  ·  29Comentarios  ·  Fuente: emberjs/ember.js

Ember.js está configurando la ruta de 'error' de forma predeterminada, pero el reconocedor de rutas ya no permite rutas duplicadas:
https://github.com/tildeio/route-recognizer/blame/5d54688f04273d3a921470b903a36266dddcdaf2/dist/route-recognizer.js#L525 -L531

Hacerlo te dará una página en blanco con un error en tu consola:

Uncaught Error: You may not add a duplicate route named `error`

Las rutas predeterminadas de 'error' se establecen aquí:
https://github.com/emberjs/ember.js/blob/10857fd98008bb47bd63bfe3d21b0fc224a197a5/packages/ember-routing/lib/system/dsl.js#L49 -L50

Puede probarlo tratando de manejar error ruta usando ember g route error .
Esta funcionalidad funcionó bien en 2.9.

Bug Ember 2.10 Has Reproduction

Comentario más útil

Corregido en 2.11.1

Todos 29 comentarios

@ diamondo25 ¿Puedes reproducir en un Twiddle por favor?

También estoy viendo esto y no recuerdo haberlo visto en la versión beta más reciente de ayer.

Parece legitimo. Esto es en virtud de un cambio route-recognizer que hice. Necesita bloquear la creación predeterminada si el usuario ya ha creado una. (Sé cómo arreglarlo, lo conseguiré).

@nathanhammond, ¡ gracias por arreglar tan rápido! @rwjblue Lo etiqueté como "Error", tal vez este problema se pueda resolver con una próxima versión 2.10.1.

¡Esa no es la solución, @pixelhandler! Ahí es donde se introdujo el error. 😜Esto necesita una liberación puntual una vez arreglado, pero tengo algunas otras cosas que abordar antes de poder volver a hacer las cosas del enrutador. (Tengo alrededor de 5 problemas abiertos que abordar).

¿Hay algún estatus en este tipo?

Solucionamos este problema al actualizar la aplicación Bustle a 2.10, y necesitaremos refactorizar nuestra ruta raíz error para que se llame de manera diferente o postergar la actualización a 2.10.

También estamos interesados ​​en el estado de este error. Por el momento, estamos evitando actualizar a 2.10.

Tenía la esperanza de poder solucionar esto al no registrar explícitamente la ruta error y dejar mi plantilla de error, ruta, etc. en su lugar. Lo probé y encontré:

  • En un enlace de ruta fallido, el enrutador aparecerá en la ruta de error y se mostrará mi plantilla personalizada.
  • En una transición deliberada al error, el enrutador no pasa a mi plantilla. Curiosamente, sin embargo, no registra el mismo mensaje de error que recibe cuando no existe una ruta.

Estoy pensando que tal vez podría dejar la plantilla, la ruta, el controlador, etc. en su lugar y registrar una ruta de error personalizada que apunte a la misma plantilla para mis casos de error manejados explícitamente. Tal vez esto manejaría tanto los errores detectados como los no detectados con mi plantilla personalizada.

@nathanhammond - ¿Tiene alguna idea sobre lo anterior? ¿Vale la pena el hacker o es mejor esperar una solución oficial?

No importa :(

La propuesta anterior aún requeriría la asignación error y desencadenaría este error.

Puedo simplemente hacer la ruta personalizada para mis errores manejados y usar mi mismo componente de error en la plantilla error .

Parece ser el único otro enfoque pendiente de solución.

CC: @nathanhammond

Me di cuenta de que esto se solucionó en ember v2.12.0-beta.1, ¿hay alguna posibilidad de que esta solución se vuelva a exportar a una versión 2.11? Dado que la versión beta 2.12 presenta una gran cantidad de problemas nuevos.

Dado que la versión beta 2.12 presenta una gran cantidad de problemas nuevos.

¡Informe cualquier problema que encuentre con el ciclo beta!

¿Existe alguna posibilidad de que esta corrección se vuelva a exportar a una versión 2.11?

Sí, creo que es una buena idea.

Parece que esto se ha comentado en v0.2.9 + con 27c0f57 y 9b21d93 para la serie 0.3.x.

@rwjblue, ¿esto también se volvería a parchear a 2.11 o 2.10? No estoy seguro del proceso para decidir qué errores se corrigen en qué versión.

Corregido en 2.11.1

¿Se solucionó esto de una manera diferente a la versión beta.1? Acabo de probar 2.11.1 y todavía me da un error de ruta duplicado sobre "hotel.error" mientras que la versión beta no.

@Glennvd - Sí, son versiones diferentes de route-Recognizer (0.2.9 para 2.11 y 0.3 para 2.12). Es posible que arruiné esto de alguna manera. ¿Puede compartir el error y el seguimiento de la pila que obtiene con 2.11? Además, ¿es posible un repositorio de twiddle y / o demo? Estoy feliz de lanzar un 2.11.2 una vez que averigüemos qué hice mal ...

@rwjblue Tengo un twiddle aquí, solo necesita ser cambiado a la versión de ascua correcta https://ember-twiddle.com/e4b8412bf5629483f94276a001598571

Stacktrace completo (de mi propia aplicación) a continuación.
add (ember.debug.js:55618) (anonymous) (ember.debug.js:57247) (anonymous) (ember.debug.js:55191) eachRoute (ember.debug.js:55179) eachRoute (ember.debug.js:55177) eachRoute (ember.debug.js:55177) map (ember.debug.js:55190) map (ember.debug.js:57244) _initRouterJs (ember.debug.js:27511) setupRouter (ember.debug.js:27606) startRouting (ember.debug.js:27592) startRouting (ember.debug.js:2887) didBecomeReady (ember.debug.js:3867) invoke (ember.debug.js:337) flush (ember.debug.js:405) flush (ember.debug.js:529) end (ember.debug.js:599) run (ember.debug.js:722) join (ember.debug.js:744) run.join (ember.debug.js:22286) (anonymous) (ember.debug.js:22349) mightThrow (jquery.js:3570) process (jquery.js:3638) nrWrapper ((index):97)
El error sigue siendo el mismo Uncaught Error: You may not add a duplicate route named hotel.error .

@rwjblue corriendo

grep --recursive "RouteRecognizer.VERSION" node_modules/ember-source

devoluciones

node_modules/ember-source/dist/ember.debug.js:RouteRecognizer.VERSION = '0.2.8';
node_modules/ember-source/dist/ember.js:RouteRecognizer.VERSION = '0.2.8';
node_modules/ember-source/dist/ember.prod.js:RouteRecognizer.VERSION = '0.2.8';

Sí, el problema es que [email protected] se lanzó con la salida dist de 0.2.8. Estoy trabajando en ello...

@rwjblue , muy apreciado señor.
¡Hazme saber si necesitas algo!

De acuerdo, lancé [email protected] con la salida dist actualizada, luego salté en la rama de lanzamiento (en https://github.com/emberjs/ember.js/commit/6c7e6950f127aa31912b5729971703c0c9615655), y lo confirmé en la salida de compilación (en https://github.com/components/ember/commit/4a9c7361f4f546daf3ad342da6d196b5b4b6bf20).

Luego confirmé con el twiddle compartido por @Glennvd anterior que al usar release branch no ocurre ninguna afirmación (y la aplicación se inicia).

Si alguien más puede comprobar mi cordura aquí, puedo lanzar 2.11.2 ...

En eso.

@rwjblue perdona mi noobies,
Estoy tratando de construir mi proyecto con

devDependencies: {
// ...
"ember-source": "git://github.com/emberjs/ember.js.git#6c7e6950f127aa31912b5729971703c0c9615655"
// ...

pero falla en

$ ember build
⠋ Building
Cannot find module 'node_modules/ember-source/dist/ember-template-compiler.js'

Qué estoy haciendo mal :)?

@gmaliar ember-source no tiene los artefactos de compilación en el repositorio, por lo que debe usar la etiqueta bower o clonar, compilar y vincular ember localmente.

Gracias @locks ,
@rwjblue Puedo confirmar que está funcionando.

Esto se puede cerrar, funciona correctamente en 2.11.2 .

¡Gracias por confirmar!

¿Fue útil esta página
0 / 5 - 0 calificaciones