تخطَّ إلى المحتوى

٣ يوليو ٢٠٢٦

حل خطأ ModuleNotFoundError و Cannot find module بالعربي

شارك المقال:

خطآن يواجههما كل مطوّر تقريبًا: ModuleNotFoundError في بايثون و Cannot find module في Node.js. كلاهما يقول الشيء نفسه: "طلبتَ كودًا من مكان ما، ولم أجده." لنفهم السبب ونحلّه بالترتيب.

الشكل الذي يظهر به الخطأ

في بايثون:

ModuleNotFoundError: No module named 'requests'

في Node.js:

Error: Cannot find module './utils'

الرسالة تخبرك دائمًا باسم الوحدة الناقصة بين علامتَي اقتباس — اقرأها أولًا، فهي نصف الحل.

الأسباب الخمسة الأكثر شيوعًا

السببكيف تتأكّدالحل
المكتبة غير مثبّتةلم تشغّل installpip install أو npm install
بيئة/مجلّد خاطئثبّتها في مكان وتشغّل من آخرفعّل الـ venv نفسه
خطأ في اسم/مسار الاستيرادحرف كبير/صغير أو مسار خاطئصحّح الاسم والمسار
نسيت node_modulesحذفتها أو استنسخت مشروعًاnpm install
تعارض أسماءملفّك يحمل اسم مكتبةأعد تسمية ملفّك

الحل في بايثون خطوة بخطوة

1) ثبّت المكتبة بشكل صحيح

استخدم python -m pip لتضمن التثبيت في مفسّر بايثون نفسه الذي تشغّل به:

python -m pip install requests

2) تحقّق من البيئة الافتراضية (venv)

أكثر سبب خفيّ: ثبّتها عالميًّا لكنك تشغّل داخل بيئة افتراضية (أو العكس).

# فعّل البيئة أولًا
source venv/bin/activate      # على لينكس/ماك
venv\Scripts\activate         # على ويندوز
python -m pip install requests

3) انتبه لتسمية ملفّاتك

إذا سمّيت ملفّك random.py أو math.py، سيحاول بايثون استيراد ملفّك بدل المكتبة القياسية. أعد تسميته.

💡 نصيحة: import sys; print(sys.executable) يطبع مسار بايثون الذي يعمل فعلًا — قارنه بالمسار الذي ثبّتَ فيه المكتبة.

الحل في Node.js خطوة بخطوة

1) ثبّت الاعتماديات

بعد استنساخ أي مشروع، مجلّد node_modules لا يُرفع عادةً — أعِد بناءه:

npm install

2) فرّق بين وحدة مثبّتة وملفّ محلّي

import express from "express";   // مكتبة: من node_modules
import { sum } from "./utils.js"; // ملفّ محلّي: يبدأ بـ ./

نسيان ./ أمام الملفّات المحلّية سبب شائع جدًّا لـ Cannot find module.

3) تأكّد من الامتداد ونوع الوحدات

في وحدات ESM (عندما يكون "type": "module" في package.json) يجب أن تكتب الامتداد صراحةً:

import { sum } from "./utils.js"; // ✅ .js مطلوب في ESM

قائمة تحقّق سريعة

  • هل شغّلت pip install / npm install؟
  • هل أنت في البيئة/المجلّد الصحيح؟
  • هل اسم الاستيراد مطابق تمامًا (حرف كبير/صغير)؟
  • هل يبدأ المسار المحلّي بـ ./؟
  • هل ملفّك يحمل اسم مكتبة بالخطأ؟

الخلاصة

ModuleNotFoundError و Cannot find module ليسا خطأً في منطق برنامجك، بل في مكان الكود: إمّا لم تُثبّت المكتبة، أو تشغّل من بيئة خاطئة، أو المسار غير صحيح. راجع القائمة أعلاه بالترتيب وستحلّه في دقائق.

تعمّق أكثر في إدارة الحزم في بايثون و الوحدات و npm في Node.js، أو راجع أخطاء بايثون الشائعة و أخطاء npm install.

📚 مصادر رسمية للتعمّق: freeCodeCamp — مصدر تعلّم البرمجة

الأسئلة الشائعة

لماذا يظهر خطأ ModuleNotFoundError رغم تثبيت المكتبة؟

غالبًا لأنك ثبّتها في بيئة بايثون مختلفة عن التي تشغّل بها الكود. تأكّد أنك فعّلت البيئة الافتراضية (venv) نفسها، واستخدم python -m pip install بدل pip وحده.

ما الفرق بين ModuleNotFoundError و ImportError؟

ModuleNotFoundError نوع فرعي من ImportError ظهر في بايثون 3.6، ويعني تحديدًا أن المفسّر لم يجد الوحدة أصلًا. أما ImportError فقد يعني أيضًا أن الوحدة موجودة لكن فشل استيراد اسم معيّن منها.

كيف أحلّ Cannot find module في Node.js؟

شغّل npm install لتثبيت الاعتماديات، وتأكّد من صحّة مسار الملف في require/import، ومن وجود المكتبة في package.json وفي مجلّد node_modules.

اقرأ أيضًا

تصفّح كل المقالات في المدوّنة، أو ابدأ التعلّم من المسارات و خرائط الطريق.