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
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.
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
:
Para:
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