Ember.js: Transisi yang dibatalkan menyebarkan kesalahan ke Ember.RSVP.on ('error', ...)

Dibuat pada 20 Okt 2015  ·  36Komentar  ·  Sumber: emberjs/ember.js

Seperti yang terlihat dalam contoh ini, transisi yang dibatalkan (melalui pengalihan atau aborsi manual) menyebarkan kesalahan TransitionAborted ke penanganan kesalahan RSVP sementara di 1.x tidak. Apakah ini perubahan yang disengaja atau apakah kesalahan tersebut merupakan kesalahan yang keliru?

Bug Inactive Needs Reproduction

Komentar yang paling membantu

Kami mengalami masalah yang sama ini dengan platform pelacakan kesalahan kami Sentry dan menyelesaikannya dengan solusi yang terlihat di komit ini . Mungkin itu membantu seseorang :)

Semua 36 komentar

@ofbriggs tebakan terbaik saya adalah bahwa komit ini - https://github.com/emberjs/ember.js/commit/94e1035a0eb66cc4d2a6624ff2557a331524f663 sekitar 28 hari yang lalu membahas perilaku sekitar TransitionAborted mungkin @chancancode atau @rwjblue dapat menjawab ini pertanyaan.

Saya ragu bahwa komit saya mengubah perilaku tertentu itu, tetapi saya pribadi setuju bahwa tampaknya lebih baik untuk tidak menyebarkan ini ke RSVP, meskipun saya tidak yakin apa yang sebenarnya telah berubah.

Saya mungkin akan mencari sesuatu yang terkait minggu depan (instrumentasi rute), jadi jika tidak ada orang lain yang mengetahuinya saat itu saya mungkin menemukan alasannya sebagai bagian dari pekerjaan itu.

Sepertinya beberapa internal tidak menangani penolakan, ini dianggap bug.

Jika penolakan ditangani pada giliran yang sama, itu tidak menyebar ke on('error

Ada pembaruan tentang ini? Saya mengalaminya di Ember 2.2.0 juga.

Untuk saat ini saya hanya melakukan hardcode nama kesalahan sebagai solusi.

export default function onServerError(cb) {
  Ember.RSVP.on('error', (reason) => {
    // An aborted transition propogates an error to RSVP
    if(reason.name !== 'TransitionAborted') {
      cb(reason);
    }
  });
}

Ada kemajuan dalam hal ini? Kami juga mengalami ini di Ember 2.3.

+1

Kami mengalami masalah yang sama ini dengan platform pelacakan kesalahan kami Sentry dan menyelesaikannya dengan solusi yang terlihat di komit ini . Mungkin itu membantu seseorang :)

+1

+1

+1

Terima kasih @stravid , inilah yang saya butuhkan. Berbulan-bulan bug ini dan saya akhirnya menemukan utas ini dan solusi Anda setelah banyak Google-fu. 🙇

Terima kasih atas kata-katanya yang baik @devinus , saya akan mencoba menulis sedikit posting blog agar kedepannya tidak terlalu banyak Google-fu yang dibutuhkan :)

Terima kasih @stravid , tetapi ini masih bukan solusi, mungkin kita bisa menambahkan lebih banyak args pada error callback untuk memeriksa apakah permintaan model gagal.

Saya baru saja menggabungkan perbaikan di ember-cli-sentry https://github.com/damiencaselli/ember-cli-sentry/pull/67

Mengalaminya di Ember 2.5 (kami sedang dalam proses untuk memperbarui versi Ember).
Untuk referensi di masa mendatang, saya merekomendasikan penggunaan ember-cli-sentry ^.

Sebelum kami menemukan asal kesalahan kami bahkan harus meningkatkan langganan penjaga kami karena jumlah alarm palsu ... ditambah satu sore / malam ...

Saya juga kehilangan waktu untuk mengetahui bahwa ini adalah kesalahan positif palsu.

menggunakan transitionTo di dalam redirect didokumentasikan dalam panduan dan di API:
https://emberjs.com/api/ember/2.18/classes/Route/methods/redirect?anchor=redirect

Meski demikian itu masih menghasilkan kesalahan:
https://ember-twiddle.com/41c21d19e962b4981c967e46228452bb

Ini akan menghemat waktu bagi banyak pendatang baru

@chancancode atau @rwjblue Merencanakan perubahan apa pun pada perilaku ini?
Kami melihat ini ketika kami memiliki penjaga di beforeModel() yang bertransisi ke rute yang berbeda.
Kami masih melihatnya di Ember 2.16

@Boubalou @bichotll @binoculars @bkCDL @bugduino @cbou @chancancode @devinus @dschmidt @dtropp @gertjanwytynck @ jbryson3 @jemware @olivia @remkoboschker @stefanpenner @stianpr @stravid @tchak @ victor95pc adalah ini masih menjadi masalah, mungkin kita harus dekat , Bagaimana menurut anda?

Saya hampir tidak menggunakan Ember saat ini, tetapi saya kira Anda dapat mencoba mereproduksinya dengan mem-forking ini dan memperbarui versi Ember?
http://emberjs.jsbin.com/wiruqobiqe/1/edit?output

Sama seperti @bichotll , saya akhirnya melakukan pekerjaan backend akhir-akhir ini dan tidak menyukai Ember lagi. Saya akan membiarkan kalian memutuskan apa yang baik untuk ini. :)

Saya tidak memiliki kesempatan untuk mengujinya

Saya berhenti menggunakan Ember, jadi saya tidak bisa memastikannya masih menjadi masalah.

Sepertinya itu masih menjadi masalah: https://ember-twiddle.com/fe0e87339fd079e212d5713f5288ce58

Ya, ini masih menjadi masalah (diuji dengan ember-3.5.0).

Masih melihat ini di 3.8

+1 di 2.18.2

Untuk kesalahan browser, sepertinya ini lebih merupakan masalah kebisingan. Namun, dengan Fastboot ini menjadi sedikit lebih sulit, karena lemparan akan menghentikan semuanya. Saya belum dapat menemukan cara untuk menangkap kesalahan tersebut, dan saya menduga masalahnya adalah bahwa pengecualian dilemparkan ke dalam penangan kesalahan janji.

Karena penasaran, berapa nilai lemparan khusus itu? Saya bertanya-tanya apakah itu bisa dihapus, atau apakah penangan kesalahan bisa dipindahkan sehingga bisa diganti.

@Boubalou @bichotll @binoculars @bkCDL @bugduino @cbou @chancancode @devinus @dschmidt @dtropp @gertjanwytynck @ jbryson3 @jemware @olivia @remkoboschker @stefanpenner @stianpr @stravid @tchak @ victor95pc adalah ini masih menjadi masalah, mungkin kita harus dekat , Bagaimana menurut anda?

@pixelhandler itu masih menjadi masalah - Saya dapat mereproduksinya di Ember 3.8.3. Saya pikir kita harus mempertimbangkan untuk menghapus inactive label, terutama @robgarden menyediakan repo untuk reproduksi.

Saya setuju. Ini masalah yang sangat mengganggu. Ini juga tes pemblokiran jika Anda menguji apakah transisi telah dibatalkan

Pernyataan catch kami untuk transisi yang mungkin mengalami pembatalan secara eksplisit memeriksa kesalahan ini. Masih terasa sakit ...

Pertanyaan untuk dijawab adalah jika kita peduli tentang TransitionAbortedError , dapatkah ini terjadi dengan cara yang kita ingin agar pengecualian dilaporkan? Ini dapat berguna untuk mengetahui kapan pengguna dialihkan (ini biasanya perilaku yang tidak terduga untuk pengguna atau UX yang buruk, pengguna harus tahu ke mana mereka pergi ketika mereka mengklik sesuatu).

Dalam banyak kasus, Anda harus mempertimbangkan ke mana tujuan pengguna sebelum Anda bisa mengarahkan mereka dan menggunakan pengalihan sebagai upaya terakhir. Kesalahan "palsu" yang dilaporkan sebenarnya adalah indikasi desain UX yang buruk.

Tentu saja saya terpengaruh oleh masalah ini karena dalam banyak kasus Anda tidak tahu bagaimana mengarahkan pengguna sampai setelah model hook ditembakkan ... seperti bidang yang berubah di backend. Masih bagus untuk memberikan masukan pengguna tentang transisi daripada mengalihkan mereka secara diam-diam.

Itulah mengapa menurut saya adalah hal yang baik bahwa mereka dilempar, ini memberikan kesempatan untuk mengingatkan pengguna tentang transisi yang tidak terduga dan mengingatkan Anda tentang tempat-tempat di mana pengalaman pengguna Anda dapat ditingkatkan.

@ezpuzz Otorisasi berjenjang (bukan otentikasi) adalah area yang selalu kami hadapi . Kami menyimpan transisi untuk nanti sehingga kami dapat memberikan UX yang baik , dan meringankan kesulitan developer saat mengimplementasikan rute. Kami tidak tahu rute mana yang memerlukan izin tambahan hingga ditemukan, dalam hal ini kami membatalkan dan meminta kredensial tinggi sebelum mencoba lagi. Pernyataan umum umum bahwa dalam banyak kasus, UX yang buruk adalah istilah yang salah.

Juga untuk diperhatikan, kesalahan ini dimunculkan dalam blok async, tidak diturunkan ke rsvp.on ('error'

Juga jika Anda tidak menimpa RSVP.on('error') kode ini berjalan yang menelan kesalahan: https://github.com/emberjs/ember.js/blob/master/packages/@ember/ -internals / runtime / lib /ext/rsvp.js

@ James1x0 maaf, yang saya maksud adalah bahwa ada kasus yang berguna untuk memberikan pengecualian (salah satunya adalah mengidentifikasi poin nyeri pengguna) tetapi kesalahan saat ini tidak menyertakan informasi yang cukup sekarang untuk menjadikannya laporan bug yang berguna. Dalam kasus penggunaan Anda, Anda mungkin ingin merekam dari percobaan transisi apa yang diminta oleh pengguna untuk meningkatkan kredensial dan yang mungkin terjadi di banyak tempat yang memungkinkan dalam aplikasi Anda.

Dalam hal ini, kami dapat meningkatkan kegunaan kesalahan di sini: https://github.com/tildeio/router.js/blob/604f7dfa246148a7737e1bb052b563c679b6d91a/lib/router/transition-aborted-error.ts

dengan meneruskan lebih lanjut tentang transisi di sini: https://github.com/tildeio/router.js/blob/604f7dfa246148a7737e1bb052b563c679b6d91a/lib/router/transition.ts#L401

Itu bisa diabaikan jika tidak seperti yang disebutkan dalam komentar terakhir saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat