Ember.js: Erro enganoso na migração 3.15

Criado em 27 dez. 2019  ·  3Comentários  ·  Fonte: emberjs/ember.js

Durante minhas aventuras de migração Octane, deparei com este erro:

index.js:172 Uncaught Error: Assertion Failed: You attempted to generate a link 
for the "cashbook" route, but did not pass the models required for generating 
its dynamic segments. Assertion Failed: The <strong i="6">@action</strong> decorator must be 
applied to methods when used in native classes

Screenshot 2019-12-27 at 22 31 47

Fiquei confuso na primeira parte de "gerar link", mas o principal problema está no "decorador @action ". Assim que resolvi isso, o erro na "rota do livro de caixa" foi embora.

Acredito que existem duas maneiras de melhorar o DX:
1) Parece que o que quer que produza o erro "rota do livro de caixa" (presumo um componente LinkTo ?), Uma vez que captura _alguma_ exceção, assume erroneamente que models não foram fornecidos.
2) Se o segundo erro reclamando de @action me desse uma dica sobre o arquivo que estava incorreto, eu encontraria a origem do problema muito mais rápido.


Nota de rodapé para quem pode sofrer do mesmo problema: Acontece que action e task (de ember-simultaneidade) foram definidos em um controlador com os mesmos nomes . Depois de executar o codemod npx ember-native-class-codemod http://localhost:4200 ./app , seus nomes colidiram no namespace de nível de classe.

Bug

Todos 3 comentários

Um pouco de fundo aqui, a afirmação em questão foi adicionada em https://github.com/emberjs/ember.js/pull/14554. Essa correção pressupõe que o único motivo pelo qual isso pode causar um erro é que você não forneceu parâmetros dinâmicos suficientes (e o motivo pelo qual aumentamos a mensagem de erro é que você precisa saber a rota de destino).

Acho que a correção certa aqui seria atualizar este bloco catch :

https://github.com/emberjs/ember.js/blob/d1ad76a2b22ce470639df3dfc6efb6864a70f588/packages/%40ember/-internals/glimmer/lib/components/link-to.ts#L770 -L777

Para:

  1. Remova a parte sobre segmentos dinâmicos inválidos (para que a mensagem apenas mencione algo como "Ocorreu um erro ao gerar um link
    para a rota "livro-caixa", $ {e.message} "
  2. Verifique se o erro que é realmente lançado é o esperado, se for faça o assert , se não, então throw e

Sim, acabei de ter o mesmo problema no 3.18, obrigado por postar isso, tornou mais fácil ver além do bit do link de geração para o problema real do decorador @action no meu caso ser o mesmo nome de outro.

No meu caso, eram nomes de ação duplicados

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