NestJS / دليل حلول تحريري
تشخيص فشل البناء والرموز ورؤية الوحدات
افصل التسجيل المفقود ومخالفة الرمز والنطاق وفشل المصنع قبل تكرار المزود أو جعله عاماً.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
قد يفشل بناء التطبيق عند حل اعتماد، أو يفشل اختبار قبل أول تأكيد له، أو يظهر مثيلان لخدمة يفترض أن تكون مشتركة. احفظ اسم المزود المستهلك، وموضع معامل المنشئ، ورمز الحقن الفعلي المطلوب، وسياق الوحدة. فشل اتصال مصدر داخل مصنع يختلف عن عدم معرفة هوية حقن، ولا ينبغي دمجهما في تشخيص واحد.
افهم الأسباب المحتملة
- تشمل الأسباب المحتملة استعمال واجهة ممحوة كرمز، أو إنشاء Symbol جديد بدلاً من استيراد الكائن المصدر، أو غياب التصدير والاستيراد، أو تسجيل المزود أكثر من مرة، أو دورة استيراد ملفات، أو إعداداً مخالفاً في مصنع حلت مدخلاته. قد يخفي جعل كل الوحدات عامة مشكلة واحدة بينما يغير الملكية ويخلق أعمار موارد غير متوقعة.
حدد مرحلة البناء التي فشلت
ابدأ بفئة الخطأ الآمنة التي يمكن تسجيلها، وبأصغر رسم وحدات يستطيع إعادة إنتاج الفشل. حدد هل رمز الحقن مجهول، أم معروف لكنه غير مرئي للوحدة المستهلكة، أم حل بنطاق غير متوقع، أم أن مصنعه رفض بعد نجاح حل مدخلاته. احفظ هوية الرمز المطلوب بدقة من دون تسجيل اعتمادات أو قيم إعداد خاصة. يستطيع الاختبار إنشاء المزودين أثناء compile قبل استدعاء أي طريقة في متحكم. لا تعد تشغيل التطبيق كاملاً ضد مصادر مضبوطة للحصول على مكدس أطول؛ اعزل رسم الوحدات ببدائل اختبار صريحة واحتفظ ببيانات الفشل الأصلية.
قارن الرمز الفعلي والوحدة المالكة
لا توفر واجهة TypeScript رمزاً وقت التشغيل. إذا كان الربط يستعمل Symbol، فقارن كائن الرمز المستورد نفسه، لا وصفه المطبوع. بعد ذلك حدد الوحدة التي تسجل الرمز وتصدره، وتحقق من أن المستهلك يستورد الوحدة المالكة. سجل JSON التالي ملاحظة تحقيق اصطناعية، وليس خرج حاوية. قد يؤدي نسخ المزود إلى كل مستهلك إلى إنشاء مثيلات ومجمعات مصادر منفصلة بدلاً من إصلاح الرؤية. إذا كان المقصود اسماً مستعاراً، فميز useExisting من بناء تنفيذ آخر عبر useClass. اجعل تعريفات الرموز قليلة الاعتماد حتى لا تجعل دورة استيراد ملف قيمة الرمز غير متاحة أثناء التهيئة.
{"requestedToken":"COURSE_READER-shared-runtime-object","owner":"CatalogModule","consumer":"ReportingModule","checks":["registered","exported","owner-imported","same-token-object","factory-stage"],"execution":"synthetic-review-only"}
يسمي السجل الأدلة ولا يسجل أو يحل مزوداً.
افحص الإعداد وتهيئة المورد مستقليْن
بعد نجاح حل المدخلات قد يظل المصنع يفشل أثناء تحليل الإعداد أو اقتناء مورد. تحقق من النص المطلوب والمدى العددي والمفردات المنطقية قبل إعلان الجاهزية، مع تشخيص يذكر اسم الإعداد بأمان ولا يطبع قيم الأسرار. ضع حداً لإكمال البدء غير المتزامن، ونظف ما اقتني من موارد إذا فشل اعتماد آخر. راجع هل يؤدي نطاق الطلب خطأ إلى إنشاء مجمع مصدر جديد لكل مستدع. وإذا كان السبب دورة، فحدد هل هي في استيرادات الملفات أم الوحدات أم المزودين قبل إضافة forwardRef. تأجيل المرجع لا يعوض مالك مجال واضحاً ولا يضمن ترتيب خطافات التهيئة.
ترجم رسماً مضبوطاً واختبر الهوية المقصودة
في اختبار مشروع معزول مأذون به، استبدل رمز المزود الدقيق قبل compile، وقدم بديلاً يطابق عقد الخدمة. تحقق من وجود المثيل المشترك المقصود، ومن عينة سلبية لرؤية المزود، ومن معالجة آمنة لإدخال مصنع مخالف. ثم أضف الحد الحقيقي التالي الضروري فقط. لا يترجم هذا الدليل Nest ولا يتصل بمصدر؛ يمكن تحليل JSON محلياً. سجل إصدارات الحزم والمشغل الدقيقة، لأن صيغة الوحدات في إصدار كبير وبيانات المعامل الاختياري في المنشئ وقواعد الدورة قد تتغير. الرسم الصحيح أو مقارنة أسماء نصية لا يثبتان نجاح حل الحاوية.
تحقق من نجاح الإصلاح
ينبغي أن يحل رسم الوحدات المصحح الرمز المقصود عبر وحدته المالكة من دون تكرار عملاء المصدر. اختبر رفض المصنع منفصلاً عن التسجيل المفقود، وأغلق أي سياق اختبار يملك موارد. احتفظ بأصغر رسم يعيد المشكلة وبفئة آمنة قبل الإصلاح وبعده، بدلاً من تفريغ إعدادات خاصة.
امنع تكرار المشكلة
- احفظ عقود وحدات صريحة ورموزاً مصدرة مستقرة وصيغ مزودين مراجعة. تحقق من الإعداد مركزياً وتجنب آثار التشغيل عند الاستيراد. احتفظ باختبارات حاوية محددة إلى جانب اختبارات المجال النقية، حتى لا يزيل تعديل لاحق رؤية مزود أو يغير مشاركة المثيل دون ملاحظة.