Ember.js: Kesalahan menyesatkan pada migrasi 3.15

Dibuat pada 27 Des 2019  ·  3Komentar  ·  Sumber: emberjs/ember.js

Selama petualangan migrasi Octane saya, saya menemukan kesalahan ini:

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

Saya sempat bingung di bagian pertama "generating link", tapi masalah utamanya ada di " @action decorator". Setelah saya menyelesaikan ini, kesalahan pada "rute buku kas" hilang.

Saya percaya ada dua cara untuk meningkatkan DX:
1) Sepertinya apa pun yang menghasilkan kesalahan "rute buku kas" (saya berasumsi komponen LinkTo ?) setelah menangkap pengecualian _some_, ia salah mengasumsikan bahwa models tidak disediakan.
2) Jika kesalahan kedua yang mengeluh tentang @action akan memberi saya petunjuk tentang file yang salah, saya akan menemukan sumber masalahnya lebih cepat.


Catatan kaki untuk siapa pun yang mungkin menderita masalah yang sama: Saya kebetulan memiliki action dan task (dari ember-concurrency) yang didefinisikan dalam satu controller dengan nama yang sama . Setelah menjalankan npx ember-native-class-codemod http://localhost:4200 ./app codemod, nama mereka bertabrakan di namespace tingkat kelas.

Bug

Semua 3 komentar

Sedikit latar belakang di sini, pernyataan yang dimaksud ditambahkan di https://github.com/emberjs/ember.js/pull/14554. Perbaikan itu mengasumsikan bahwa satu-satunya alasan kesalahan ini mungkin adalah karena Anda belum menyediakan cukup params dinamis (dan alasan kami menambah pesan kesalahan adalah karena Anda perlu mengetahui rute target).

Saya pikir perbaikan yang tepat di sini adalah memperbarui blok catch :

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

Untuk:

  1. Hapus sedikit tentang segmen dinamis yang tidak valid (sehingga pesan hanya menyebutkan sesuatu seperti "Terjadi kesalahan saat membuat tautan
    untuk rute "buku kas", ${e.message}"
  2. Periksa apakah kesalahan yang benar-benar dilemparkan adalah yang diharapkan, jika ya lakukan assert , jika tidak maka throw e

Yup, baru saja mengalami masalah yang sama di 3.18, terima kasih telah memposting ini, membuatnya mudah untuk melihat melewati bit tautan hasilkan ke masalah sebenarnya dari @action decorator dalam kasus saya adalah nama yang sama dengan yang lain.

Dalam kasus saya itu adalah nama tindakan duplikat

Apakah halaman ini membantu?
0 / 5 - 0 peringkat