خلال مغامرات الهجرة الخاصة بي ، عثرت على هذا الخطأ:
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
لقد تم الخلط بيني وبين الجزء الأول من "إنشاء الرابط" ، ولكن المشكلة الرئيسية تكمن في "
أعتقد أن هناك طريقتان لتحسين DX:
1) يبدو أنه أيًا كان ما ينتج عنه خطأ "مسار دفتر النقدية" (أفترض أن المكون LinkTo
؟) بمجرد أن يكتشف استثناءً ، فإنه يفترض خطأً أن models
لم يتم توفيره.
2) إذا كان الخطأ الثاني الذي يشكو من @action
يعطيني تلميحًا حول الملف غير الصحيح ، فسأجد مصدر المشكلة بشكل أسرع.
ملاحظة سفلية لمن قد يعاني من نفس المشكلة: صادف أن لديّ action
و task
(من ember-concurrency) محدّد في وحدة تحكم واحدة بنفس الأسماء . بعد تشغيل codemod npx ember-native-class-codemod http://localhost:4200 ./app
، اصطدمت أسماؤهم في مساحة الاسم على مستوى الفصل الدراسي.
قليلاً من الخلفية هنا ، تمت إضافة التأكيد المعني في https://github.com/emberjs/ember.js/pull/14554. يفترض هذا الإصلاح أن السبب الوحيد وراء حدوث هذا الخطأ هو أنك لم تقدم ما يكفي من المعلمات الديناميكية (والسبب في زيادة رسالة الخطأ هو أنك بحاجة إلى معرفة المسار الهدف).
أعتقد أن الإصلاح الصحيح هنا هو تحديث كتلة catch
:
إما ل:
assert
، إذا لم يكن كذلك ، فقم بـ throw e
نعم ، لقد عانيت للتو من نفس المشكلة في 3.18 ، شكرًا لنشر هذا ، جعل من السهل رؤية ما وراء إنشاء بت الارتباط إلى المشكلة الحقيقية لـ action decorator في حالتي التي تحمل نفس اسم آخر.
في حالتي كانت أسماء الإجراءات مكررة