NestJS / المتقدم: العمر وأدلة العمل الموزع / الدرس 18
الانتقال إلى Nest 12 وملفات البناء والتوافق
تحقق من افتراضات الحزمة والوحدة والمشغل مقابل العقود المحفوظة قبل تبني ميزات الإصدار الكبير.
في هذه الصفحة
أهداف الدرس
- افصل الحد الأدنى لتشغيل التطبيق ومتطلبات CLI وتوافق أداة الاختبار.
- احفظ التهيئة والتحقق والنقل عبر الإصدار والتراجع.
تغير الترقية الكبرى أكثر من أرقام الحزم
يوثق دليل Nest 12 حزم أساس ESM ومتطلبات مختلفة للتطبيق وتوليد CLI. لا يصادق دعم غرض محلي كل مترجم ومجمع وأداة اختبار. وافق الحزم والموائم والتكامل، واختر تصحيحاً ومشغلاً مدعومين لا حداً أدنى كبيان دعم دائم. لا يثبت فحص النموذج بـNode.js 22.23.3 ترجمة تطبيق أو إعداد Jest أو Vitest. لم تثبت اعتماد إطار. يميز ذلك بين حقيقة تمكنك من تشغيل JavaScript محلياً وبين شروط تحميل حزم جديدة من مشروع CommonJS أو بيئة اختبار قد تكون لها قيود أشد.
اجعل مدخلات الإصدار قابلة لإعادة التحقق
تربط القائمة الإصدار ونمط الوحدة والدليل دون ادعاء بناء مكتمل. احفظ في الحقيقي معرفات ثابتة للقفل والبناء وتحقق من الخرج بالمشغل المقصود. يختلف استهلاك ESM من CommonJS وأداة الاختبار، ولا تحل تسمية package.json كل التوافق. لا تشغل ترقية المشروع المشترك أثناء التأليف؛ حضر في نسخة معزولة مأذونة واحفظ تراجعاً يناسب العملاء والمهام القديمة. لا ينبغي أن يعيد التراجع ملف التطبيق السابق مع سلسلة حزم جديدة لا توافقه، فملفات الإصدار مجموعة متعاقدة لا ملفاً واحداً.
{"frameworkMajor":12,"moduleMode":"explicit-project-choice","artifacts":["lockfile","compiled-output","bootstrap-policy"],"checks":["runtime-import","container-compile","request-fixtures","job-compatibility","shutdown-order"],"execution":"review-record-only"}
لا يحمل السجل تثبيتاً أو فحصاً مكتملًا، بل يسمي الأدلة التي يقدمها الإصدار.
راجع سلوك الدورة والتحقق صراحة
ينبه الدليل لترتيب الخطافات وعلامة Optional في المنشئ. استبدل الاعتماد على ترتيب عرضي باعتماد واضح وافحص التصحيح. يبقى نهج الفئة مدعوماً ويحتاج بديل المخطط تسجيله. لا تخلط بيانات نهج بمشغل غير مضبوط وتفترض فرضاً. راجع المسار والرفع والخطأ والربط العام بعينات. قد تكون ميزة الموائم لنسخة محددة؛ وافق الاستيراد والحزم ولا تنقل منعاً قديماً أو API أحدث لكل الإصدارات. يترك ذلك مساحة لانتقال مقصود دون ادعاء أن كل إضافة في توثيق متجدد موجودة في أول إصدار من الفرع.
افحص نسخ الحمولة المدعومة محلياً
قد يحتفظ الإصدار بمهام ورسائل قديمة. يقبل الشرط النسخ المعلنة ويرفض المجهول، وهو نموذج مراجعة لا تحقق شكل أو توجيه وسيط. يختبر الحقيقي حقول ومعنى كل نسخة بما فيه مستهلك التراجع. ليست إضافة حقل آمنة دائماً مع تفسير شامل للحالات أو إدخال مطلوب جديد. افصل نسخة النقل ونسخة الكائن ولا تجعل تاريخ النشر مخططاً ضمنياً. يثبت الاختبار عضوية مجموعة دعم فقط؛ قد تحمل نسخة معترفاً بها بيانات مخالفة تحتاج تحققاً آخر قبل أي أثر.
const supported=new Set([1,2]);
function compatible(version) {return Number.isInteger(version) && supported.has(version);}
console.assert(compatible(1) && compatible(2));
console.assert(!compatible(3) && !compatible("1"));
تقبل واحد واثنان وترفض ثلاثة والنص واحد دون فحص وحدة أو مخطط أو نقل.
طابق الادعاء النهائي بالفحوص المنفذة
تغطي المراجعة التحميل والحاوية والدورة والإخراج والمصدر والرسائل والإيقاف بالبيئة المقصودة. افصل المجال والتركيب والنقل وسجل النسخ والحدود؛ ليست الصياغة انتقالاً ناجحاً. ينفذ المقرر نماذج وJSON فقط وتبقى الأجزاء runnable:false، ولا يشغل ترقية أو تثبيتاً أو مزخرفاً أو خدمة أو يصادق إنتاجاً. استخدم العقود لتخطيط دمج مأذون وحدّث الدليل من تنفيذه. يستطيع اللاحق عندئذ معرفة ما تعلّمه من مثال وما تحقق منه على البنية الفعلية، بدلاً من وراثة ضمانات لم تختبر في أي مرحلة.
الأخطاء الشائعة وإصلاحها
يحمل المشغل التطبيق وتفشل أداة الاختبار
- لماذا يحدث؟
- خلطت متطلبات توافق مشغل التطبيق بمتطلبات أدوات الاختبار والبناء.
- كيف تصلحه؟
- تحقق معاً من الأداة الدقيقة ونمط الوحدات وإصدار Node المدعوم.
- كيف تتجنب تكراره؟
- احتفظ بعينات تحميل المشغل وعينات أداة الاختبار بصورة منفصلة.
تغير الترقية ترتيب البدء دون توقع
- لماذا يحدث؟
- اعتمدت التهيئة ترتيباً عرضياً لاستدعاء خطافات دورة الحياة.
- كيف تصلحه؟
- اجعل الشروط السابقة صريحة وتحقق من سلوك الإصدار المختار.
- كيف تتجنب تكراره؟
- اختبر ترتيب التهيئة الجزئية وترتيب تحرير الموارد.
لا يعالج التراجع مهام محفوظة
- لماذا يحدث؟
- استبعد توافق الحمولات المحتفظ بها من مراجعة الإصدار.
- كيف تصلحه؟
- احفظ النسخ المدعومة أو رحل العمل المحفوظ بقصد واضح.
- كيف تتجنب تكراره؟
- اختبر تركيبات المستهلكين القدامى والجدد مع النسخ المحفوظة.
اختبر فهمك
1. لماذا تفصل متطلبات تشغيل التطبيق عن متطلبات أدوات CLI؟
اعرض الحل المشروح
قد تفرض اعتمادات التوليد وتنفيذ الإطار حدوداً دنيا مختلفة للمشغل. قد يستطيع مشغل تشغيل تطبيق مبني مسبقاً ولا يستطيع تشغيل المولدات أو أدوات الانتقال أو أداة الاختبار المختارة. تحقق من كل فعل مقصود بالمتطلبات الرسمية الحالية والتصحيح المدعوم، ولا تحول أصغر رقم مدرج إلى وعد توافق عام لكل الأدوات.
2. هل يثبت قبول نسخة الحمولة رقم واحد أمان التراجع إلى إصدار سابق؟
اعرض الحل المشروح
لا. يجب أن يفسر المستهلك حقولها ومعانيها العملية بصورة صحيحة، وأن تظل حزمه وحالة بياناته وبروتوكول المصدر متوافقة. تفحص المجموعة المحلية قاعدة قبول واحدة فقط. احتفظ بعينات كاملة للقديم والجديد، وتحقق من مجموعة ملفات التراجع الفعلية معاً في دمج معزول مأذون.
أهم ما تعلمته
- تشمل المراجعة المشغل والأدوات والعقود المحفوظة.
- صرح بفرضيات الميزة الدقيقة وحدود التنفيذ الصادقة.