ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ 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
Π― Π·Π°ΠΏΡΡΠ°Π»ΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ Β«Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠ»ΠΊΠΈΒ», Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Β«Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ΅ @action Β». ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ΅ΡΠΈΠ» ΡΡΠΎ, ΠΎΡΠΈΠ±ΠΊΠ° "ΠΊΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΡΡΠ°" ΠΈΡΡΠ΅Π·Π»Π°.
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π΅ΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ»ΡΡΡΠΈΡΡ DX:
1) ΠΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ "ΠΌΠ°ΡΡΡΡΡΠ° ΠΊΠ°ΡΡΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ" (Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ LinkTo
?), ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ _some_ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ½ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ models
Π½Π΅ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ.
2) ΠΡΠ»ΠΈ Π²ΡΠΎΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Ρ ΠΆΠ°Π»ΠΎΠ±ΠΎΠΉ Π½Π° @action
Π΄Π°Π»Π° Π±Ρ ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Ρ Π±Ρ Π±ΡΡΡΡΠ΅Π΅ Π½Π°ΡΠ΅Π» ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΈ action
ΠΈ task
(ΠΈΠ· ember-concurrency), ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ . ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° npx ember-native-class-codemod http://localhost:4200 ./app
codemod ΠΈΡ
ΠΈΠΌΠ΅Π½Π° ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΡΡΠΎΠ²Π½Ρ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΡΠΎΡΠΈΠΈ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² https://github.com/emberjs/ember.js/pull/14554. ΠΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (ΠΈ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡΡΡΡΡ).
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎΡ Π±Π»ΠΎΠΊ catch
:
ΠΠΈΠ±ΠΎ:
assert
, Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ throw e
ΠΠ°, Π±ΡΠ»Π° ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² 3.18, ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π° Π±ΠΈΡΠΎΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠ»ΠΊΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @action, Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ, ΡΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅.
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π±ΡΠ»ΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ