البرمجة

حل مشكلة اصطدام تسمية الوحدات في React Native

عند ترقية النود من الإصدار 4.6 إلى 6.5، يواجه بعض المستخدمين مشكلة في تشغيل محزم React Native عند استخدام أمر “npm start”. ينتهي الأمر بظهور رسالة خطأ تشير إلى اصطدام في تسمية الوحدات (Modules)، وتحديداً تسمية “String.prototype.es6” في ملفين مختلفين. يتم ذلك عبر رمز الخطأ التالي:

“Failed to build DependencyGraph: @providesModule naming collision:
Duplicate module name: String.prototype.es6
Paths: …/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/String.prototype.es6.js collides with …/app/MallJell/nd/react-native/packager/react-packager/src/Resolver/polyfills/String.prototype.es6.js

This error is caused by a @providesModule declaration with the same name across two different files.
Error: @providesModule naming collision:
Duplicate module name: String.prototype.es6
Paths: ……/react-native/packager/react-packager/src/Resolver/polyfills/String.prototype.es6.js collides with …./react-packager/src/Resolver/polyfills/String.prototype.es6.js

This error is caused by a @providesModule declaration with the same name across two different files.
at HasteMap._updateHasteMap (…./node_modules/react-native/packager/react-packager/src/node-haste/DependencyGraph/HasteMap.js:155:13)
at module.getName.then.name (…..node_modules/react-native/packager/react-packager/src/node-haste/DependencyGraph/HasteMap.js:115:31)”

هذه المشكلة تحدث بسبب اصطدام في تسمية الوحدات (@providesModule) بنفس الاسم في ملفين مختلفين. يُعتقد أن هذا الخطأ ينتج عن الترقية إلى الإصدار 6.5 من النود.

لحل هذه المشكلة، يمكن اتباع بعض الخطوات. أولاً، يجب التأكد من إصدار محزم React Native المستخدم، والتحقق من تحديثاته الأخيرة. قد يتم إصدار تصحيح لهذه المشكلة بواسطة المطورين.

ثانياً، يمكن محاولة حذف مجلد “node_modules” وإعادة تثبيت الحزم من جديد باستخدام أمر “npm install”. قد تحتاج إلى حذف ملف “package-lock.json” أيضاً إذا كان موجوداً.

ثالثاً، يمكن محاولة تشغيل أمر “npm cache clean” لتنظيف ذاكرة التخزين المؤقتة لـ npm، ثم إعادة تشغيل عملية التثبيت.

وأخيراً، في حال استمرار المشكلة، يمكن البحث في منتديات مجتمع React Native أو الإبلاغ عن المشكلة في مستودع GitHub الخاص بالمشروع للحصول على دعم من المطورين أو المجتمع.

باختصار، مشكلة اصطدام في تسمية الوحدات (@providesModule) تظهر بعد ترقية النود إلى الإصدار 6.5، ويمكن حلها عن طريق تحديث محزم React Native، حذف وإعادة تثبيت الحزم، وتنظيف ذاكرة التخزين المؤقتة لـ npm.

المزيد من المعلومات

بالتأكيد، لنواصل تطوير المقال:

بعد اتخاذ الخطوات السابقة، قد يتم حل مشكلة اصطدام تسمية الوحدات (@providesModule)، ولكن في بعض الحالات قد تظل المشكلة قائمة. في هذه الحالة، يمكن استخدام حلول بديلة للتغلب على المشكلة.

أحد الحلول الممكنة هو استخدام أداة “rn-duplicate-remover” التي تقوم بإزالة الملفات المكررة بين ملفات الحزمة، وبالتالي تحل مشكلة الاصطدام في تسمية الوحدات. يمكن تثبيت هذه الأداة من خلال npm بالأمر التالي:

npm install -g rn-duplicate-remover

ثم يمكن استخدام الأداة عبر تشغيل الأمر التالي في مجلد المشروع:

rn-duplicate-remover

تعتبر هذه الخطوة بديلة مفيدة في حالة عدم نجاح الحلول الأولية المذكورة.

من الجدير بالذكر أنه يجب دائمًا الاحتفاظ بنسخة احتياطية من مشروعك قبل تطبيق أي تغييرات كبيرة، وذلك لتفادي أية مشاكل غير متوقعة.

باختصار، تتيح خطوات حل مشكلة اصطدام تسمية الوحدات (@providesModule) عدة خيارات للمطورين، بما في ذلك تحديث محزم React Native، وحذف وإعادة تثبيت الحزم، واستخدام أدوات مساعدة مثل “rn-duplicate-remover”. تحتاج هذه الخطوات إلى تنفيذ دقيق وفحص مستمر للتأكد من حل المشكلة بشكل كامل.

زر الذهاب إلى الأعلى