Tamim Fahed نشر 23 يونيو 2021 أرسل تقرير نشر 23 يونيو 2021 أحاول استخدام الباني constructor لمجموعة من الأغراض بالشكل التالي: class Social { constructor(tags) { this._tags = tags } printUsername() { return 'My name is John' } } والآن عندما أقوم بإضافة التصدير بالشكل التالي: module.exports = Social لا تحدث أي مشكلة، ولكن إذا قمت بإضافتها بالشكل التالي: export default Social يظهر لدي خطأ بأن Social is not a constructor. فما هو الفرق بين هذه الطريقتين ولماذا يحدث خطأ عند استخدام إحداها في بعض الأحيان؟ 1 اقتباس
0 Salah Eddin Beriani2 نشر 23 يونيو 2021 أرسل تقرير نشر 23 يونيو 2021 هذا لأن node لا يدعم es6 syntax بعد ولكن اذا كنت تريد ذلك يمكنك أن تثبت مكتبة esm فهي تفعل لك استخدام es6 في node npm install esm بعدها عدل start script في ملف package.json { "name": "My-app", "version": "1.0.0", "description": "Some Hack", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node -r esm index.js" }, } اقتباس
0 عبدالباسط ابراهيم نشر 23 يونيو 2021 أرسل تقرير نشر 23 يونيو 2021 ذلك بسبب أن ال export default من خصائص ال es6 وتعتبر هذه النسخة من JavaScript غير مدعومه حالياً لذلك ينبغي عليك عند استخدام التصدير بالشكل التالي export default Social استخدام transpiler مثل babel لتقوم بتحويل ال es6والإصدارات اللاحقة إلى كود مدعوم من جميع المنصات والمتصفحات اقتباس
0 عبدالله عبدالرحمن11 نشر 23 يونيو 2021 أرسل تقرير نشر 23 يونيو 2021 تم تصميم JavaScript لكي نستطيع إضافة التفاعلية في صفحات الويب ولم يكن هناك حاجة لإستيراد وتصدير أكواد ولكن مع تطور تطبيقات JavaScript وأصبحت الأكواد كثيرة جداً ومن الصعب تطوير تطبيقات JavaScript ذات الحجم الكبير في ملف واحد، وايضاً ظهور Nodejs لتشغيل JavaScript خارج المتصفح ظهرت الحاجة لتصدير وإستيراد أكواد JavaScript فتم إنشاء CommonJS في Nodejs لتصدير وإستيراد الأكواد عبر module.exports و ()require اما التصدير عبر export والإستيراد عبر import فهو جديد في إصدار ES6 وnodejs كان لايدعمه سابقاً أما الآن فيدعم هذه الطريقة ، ولكن لإستخدام لديك طريقتين لإستخدام طريقة ES6 عبر تسمية ملفات الأكواد الذي تصدر وتستورد الأكواد بصيغة mjs. بدلاً من js. إذا لم تُرد عمل السابق فيمكنك إضافة هذا العلم في package.json --input-type=module اقتباس
السؤال
Tamim Fahed
أحاول استخدام الباني constructor لمجموعة من الأغراض بالشكل التالي:
class Social { constructor(tags) { this._tags = tags } printUsername() { return 'My name is John' } }
والآن عندما أقوم بإضافة التصدير بالشكل التالي:
module.exports = Social
لا تحدث أي مشكلة، ولكن إذا قمت بإضافتها بالشكل التالي:
export default Social
يظهر لدي خطأ بأن Social is not a constructor.
فما هو الفرق بين هذه الطريقتين ولماذا يحدث خطأ عند استخدام إحداها في بعض الأحيان؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.