Ember.js: Вводящая Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ошибка ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ 3.15

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 27 Π΄Π΅ΠΊ. 2019  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: emberjs/ember.js

Π’ΠΎ врСмя своих ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Octane я наткнулся Π½Π° эту ΠΎΡˆΠΈΠ±ΠΊΡƒ:

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

Π― запутался Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Β«Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ссылки», Π½ΠΎ основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Β«Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π΅ @action Β». Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ я Ρ€Π΅ΡˆΠΈΠ» это, ошибка "кассового ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°" исчСзла.

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ DX:
1) ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ всС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС "ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° кассовой ΠΊΠ½ΠΈΠ³ΠΈ" (я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ LinkTo ?), Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ _some_ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΎΠ½ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ models Π½Π΅ Π±Ρ‹Π»ΠΈ прСдоставлСны.
2) Если вторая ошибка с ΠΆΠ°Π»ΠΎΠ±ΠΎΠΉ Π½Π° @action Π΄Π°Π»Π° Π±Ρ‹ ΠΌΠ½Π΅ подсказку ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, я Π±Ρ‹ быстрСС нашСл источник ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.


ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: Ρƒ мСня Π±Ρ‹Π»ΠΈ action ΠΈ task (ΠΈΠ· ember-concurrency), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ . ПослС запуска npx ember-native-class-codemod http://localhost:4200 ./app codemod ΠΈΡ… ΠΈΠΌΠ΅Π½Π° ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π² пространствС ΠΈΠΌΠ΅Π½ уровня класса.

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

НСмного прСдыстории, рассматриваСмоС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² https://github.com/emberjs/ember.js/pull/14554. Π­Ρ‚ΠΎ исправлСниС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ СдинствСнная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ошибка, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ прСдоставили достаточно динамичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ сообщСниС ΠΎΠ± ошибкС, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚).

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот Π±Π»ΠΎΠΊ catch :

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

Π›ΠΈΠ±ΠΎ:

  1. Π£Π΄Π°Π»ΠΈΡ‚Π΅ Π±ΠΈΡ‚ ΠΎ нСдопустимых динамичСских сСгмСнтах (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² сообщСнии просто ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Β«ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка ΠΏΡ€ΠΈ создании ссылки.
    для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° "кассовая ΠΊΠ½ΠΈΠ³Π°" $ {e.message} "
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ возникшая ошибка являСтся ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ, Ссли ΠΎΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π° assert , Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ throw e

Π”Π°, Π±Ρ‹Π»Π° такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² 3.18, спасибо Π·Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π° Π±ΠΈΡ‚ΠΎΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ссылки Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @action, Π² ΠΌΠΎΠ΅ΠΌ случаС это Ρ‚ΠΎ ΠΆΠ΅ имя, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π’ ΠΌΠΎΠ΅ΠΌ случаС это Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π° дСйствий

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ