Ember.js: Não foi possível definir a rota de 'erro' em 2.10

Criado em 29 nov. 2016  ·  29Comentários  ·  Fonte: emberjs/ember.js

Ember.js está definindo a rota de 'erro' por padrão, mas o reconhecedor de rotas não permite mais rotas duplicadas:
https://github.com/tildeio/route-recognizer/blame/5d54688f04273d3a921470b903a36266dddcdaf2/dist/route-recognizer.js#L525 -L531

Isso resultará em uma página em branco com um erro no console:

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

As rotas de 'erro' padrão são definidas aqui:
https://github.com/emberjs/ember.js/blob/10857fd98008bb47bd63bfe3d21b0fc224a197a5/packages/ember-routing/lib/system/dsl.js#L49 -L50

Você pode testá-lo tentando manipular a rota error usando ember g route error .
Essa funcionalidade funcionou bem no 2.9.

Bug Ember 2.10 Has Reproduction

Comentários muito úteis

Fixado em 2.11.1

Todos 29 comentários

@ diamondo25 Você pode reproduzir em um Twiddle, por favor?

Também estou vendo isso e não me lembro de ter visto no beta mais recente de ontem

Parece legítimo. Isso ocorre em virtude de uma route-recognizer alteração que fiz. É necessário bloquear a criação padrão se o usuário já tiver criado uma. (Eu sei como consertar, vou conseguir.)

@nathanhammond obrigado por consertar tão rapidamente! @rwjblue I rotulado como "Bug" talvez este problema possa ser resolvido com uma próxima versão 2.10.1.

Essa não é a solução, @pixelhandler! É onde o bug foi introduzido. 😜Isso precisa de uma liberação pontual uma vez corrigida, mas tenho algumas outras coisas a resolver antes de poder voltar a fazer as coisas do roteador. (Tenho cerca de 5 questões em aberto para resolver.)

Existe um status sobre esse cara?

Encontramos esse problema ao atualizar o aplicativo Bustle para 2.10 e precisaremos refatorar nossa rota raiz error para receber um nome diferente ou adiar a atualização para 2.10.

Também estamos interessados ​​no status desse bug. Estamos adiando a atualização para o 2.10 por enquanto.

Eu esperava poder contornar isso não registrando explicitamente a rota error e deixando meu modelo de erro, rota, etc. Eu tentei e encontrei:

  • Em um gancho de rota com falha, o roteador irá borbulhar na rota de erro e meu modelo personalizado será mostrado.
  • Em uma transição deliberada para o erro, o roteador não faz a transição para o meu modelo. Curiosamente, ele não registra a mesma mensagem de erro que você recebe quando uma rota não existe.

Estou pensando que talvez eu pudesse deixar o modelo, a rota, o controlador etc. no lugar e registrar uma rota de erro personalizada apontando para o mesmo modelo para meus casos de erro explicitamente tratados. Talvez isso resolvesse os erros detectados e não detectados com meu modelo personalizado.

@nathanhammond - Você tem alguma opinião sobre o acima? Vale a pena hackear ou melhor apenas esperar por uma correção oficial?

Deixa pra lá :(

A proposta acima ainda exigiria o mapeamento error e acionaria este bug.

Posso simplesmente continuar fazendo a rota personalizada para meus erros manipulados e usando meu mesmo componente de erro no modelo error .

Parece ser a única outra abordagem pendente de uma correção.

CC: @nathanhammond

Percebi que isso foi corrigido no ember v2.12.0-beta.1. Há alguma chance de fazer o backport desta correção para uma versão 2.11? Já que o beta 2.12 apresenta um monte de novos problemas.

Já que o beta 2.12 apresenta um monte de novos problemas.

Relate quaisquer problemas que você encontrar com o ciclo beta!

Existe alguma chance de retroceder essa correção para uma versão 2.11?

Sim, acho que é uma boa ideia.

Parece que isso foi comentado na v0.2.9 + com 27c0f57 e 9b21d93 para a série 0.3.x.

@rwjblue isso seria corrigido para 2.11 ou 2.10 também? Não tenho certeza do processo para decidir quais bugs serão corrigidos em qual versão.

Fixado em 2.11.1

Isso foi corrigido de uma maneira diferente do beta.1? Acabei de experimentar 2.11.1 e ainda me dá um erro de rota duplicada sobre "hotel.error", enquanto o beta não.

@Glennvd - Sim, são versões diferentes do identificador de rota (0.2.9 para 2.11 e 0.3 para 2.12). É possível que eu tenha estragado isso de alguma forma. Você pode compartilhar o erro e o rastreamento de pilha obtido com o 2.11? Além disso, é possível um twiddle e / ou repo de demonstração? Estou feliz em lançar um 2.11.2 assim que descobrirmos o que fiz de errado.

@rwjblue Eu tenho um twiddle aqui, só precisa ser alterado para a versão certa do ember https://ember-twiddle.com/e4b8412bf5629483f94276a001598571

Stacktrace completo (do meu próprio aplicativo) abaixo.
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)
O erro ainda é o mesmo Uncaught Error: You may not add a duplicate route named hotel.error .

@rwjblue running

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

retorna

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';

Sim, o problema é que o [email protected] foi lançado com a saída dist do 0.2.8. Eu estou trabalhando nisso...

@rwjblue , Muito
Deixe-me saber se você precisar de alguma coisa!

OK, lancei o

Em seguida, confirmei com o twiddle compartilhado por release nenhuma asserção acontece (e o aplicativo é inicializado).

Se outra pessoa puder me verificar com sanidade aqui, posso lançar 2.11.2 ...

Nele.

@rwjblue perdoe minha noobiness,
Estou tentando construir meu projeto com

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

mas falha em

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

O que estou fazendo errado :)?

@gmaliar ember-source não tem os artefatos de construção no repositório, então você precisa usar a tag do bower ou clonar, construir e vincular o ember localmente.

Obrigado @locks ,
@rwjblue Posso confirmar que está funcionando.

Isso pode ser fechado, funciona corretamente em 2.11.2 .

Obrigado por confirmar!

Esta página foi útil?
0 / 5 - 0 avaliações