تكرار السؤال: …
الإجابة المختصرة
CJS متزامن ويعتمد على require() وقت التشغيل، بينما ESM يعتمد على import/export ثابت ويحلل شجرة الاعتمادات بشكل غير متزامن قبل التنفيذ.
الشرح
CJS هو النظام التاريخي لـ Node.js حيث تُحمّل الوحدات تزامناً. ESM هو المعيار القياسي الرسمي للغة، ويتميز بإمكانية التحليل الساكن ودعم Top-level await.
مثال بالكود
export const add = (a: number, b: number) => a + b;أخطاء شائعة
- محاولة استخدام require() داخل ملفات ESM دون إنشاء require مخصص عبر createRequire.
أسئلة متابعة
- كيف تتعامل Node.js مع مشكلة التبعيات الدائرية (Circular Dependencies) بين CJS و ESM؟
- ما هو خطر الـ Dual Package Hazard عند نشر مكتبة تدعم CJS و ESM معاً في Node.js؟