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

اقرأ نوع الخطأ ومكانه

ال ReferenceError غالبا معناها إن اسم مستخدم مش متاح في السياق وال TypeError ممكن تظهر لما تتعامل مع قيمة بطريقة مش مناسبة لنوعها وال SyntaxError بتدل على مشكلة في صيغة الكود

خد اسم الملف ورقم السطر كنقطة بداية السطر اللي ظهر فيه الخطأ ممكن يكون مكان ظهور النتيجة مش أصل السبب لأن القيمة الغلط ممكن تكون جاية من دالة تانية

function titleLength(article) {
  return article.title.length;
}

titleLength({});
TypeError

اسأل عن القيمة الموجودة وقت التنفيذ

المطلوب هنا قياس طول عنوان لكن الكائن مفيهوش title فقراءة length من undefined فشلت قبل تغيير الدالة افحص البيانات اللي وصلت ليها وحدد هل العنوان إجباري ولا ممكن يغيب

const article = {};
console.log(article.title);
console.log(typeof article.title);
console.log(Object.hasOwn(article, "title"));
undefined
undefined
false

صلح السبب حسب المطلوب

لو وجود العنوان ضروري متستبدلش الغياب بنص فاضي وتسكت ارفض البيانات برسالة أوضح أما لو العنوان اختياري فعلا فالقيمة البديلة ممكن تكون مناسبة

function titleLength(article) {
  if (typeof article?.title !== "string") {
    throw new TypeError("Article title must be a string");
  }
  return article.title.length;
}

console.log(titleLength({ title: "HTML" }));
4

صغر المثال لحد ما تقدر تعيد المشكلة

جرب نفس الدالة بنفس المدخلات بعيدا عن بقية الشاشة لو المشكلة مستمرة يبقى عندك مثال صغير تقدر تراجعه ولو اختفت دور في مصدر البيانات أو ترتيب التنفيذ

احتفظ بالمثال اللي سبب المشكلة وارجع جربه بعد الإصلاح مع مثال طبيعي علشان متصلحش حالة وتكسر حالة تانية

استخدم أدوات المتصفح لما الطباعة متكفيش

حط Breakpoint قبل السطر اللي بيفشل وراجع القيم والنداءات في Call Stack ولو البيانات جاية من طلب شبكة راجع حالة الطلب ومحتواه في Network ممكن تكون متوقع JSON لكن الخادم رجع صفحة خطأ

متطبعش كلمات مرور أو مفاتيح وصول في سجل مشترك ومتعرضش تفاصيل الخادم الداخلية للزائر استخدم السجل المناسب أثناء التشخيص

غير حاجة واحدة وقارن النتيجة

اكتب توقع بسيط زي العنوان غايب من استجابة الخادم وبعدها اختبره لو التوقع غلط عدل فهمك بدل إضافة شروط عشوائية لكل احتمال

قبل طلب المساعدة جهز رسالة الخطأ وخطوات إعادة المشكلة وأصغر جزء كود لازم لتوضيحها ووضح النتيجة المتوقعة ده بيسهل على غيرك يساعدك وعلى نفسك تفهم المشكلة

مصادر للتوسع