استكشاف أخطاء تطبيقات Node.js وإصلاحها في Azure Functions

هام

يتغير محتوى هذه المقالة استنادا إلى اختيارك لنموذج البرمجة Node.js في المحدد في أعلى الصفحة. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. تعرف على المزيد حول الاختلافات بين v3 وv4 في دليل الترحيل.

توفر هذه المقالة دليلا لاستكشاف السيناريوهات الشائعة وإصلاحها في تطبيقات وظائف Node.js.

تعد علامة التبويب تشخيص المشكلات وحلها في مدخل Microsoft Azure موردا مفيدا لمراقبة المشكلات المحتملة المتعلقة بتطبيقك وتشخيصها. كما أنه يوفر حلولا محتملة لمشاكلك بناء على التشخيص. لمزيد من المعلومات، راجع تشخيصات تطبيق Azure Function.

مورد مفيد آخر هو علامة التبويب Logs في مدخل Microsoft Azure لمثيل Application Insights الخاص بك بحيث يمكنك تشغيل استعلامات KQL المخصصة. يوضح الاستعلام المثال التالي كيفية عرض الأخطاء والتحذيرات لتطبيقك في اليوم الماضي:

let myAppName = "<your app name>";
let startTime = ago(1d);
let endTime = now();
union traces,requests,exceptions
| where cloud_RoleName =~ myAppName
| where timestamp between (startTime .. endTime)
| where severityLevel > 2

إذا لم تحل هذه الموارد مشكلتك، فإن الأقسام التالية تقدم المشورة لمشكلات تطبيق معينة:

لم يتم العثور على وظائف

إذا رأيت أي من الأخطاء التالية في سجلاتك:

لم يتم العثور على مشغلات HTTP.

لم يتم العثور على وظائف وظيفة. حاول جعل فئات وأساليب وظيفتك عامة. إذا كنت تستخدم ملحقات الربط (مثل Azure Storage وServiceBus و Timers وما إلى ذلك) فتأكد من استدعاء أسلوب التسجيل للملحق (الملحقات) في التعليمات البرمجية لبدء التشغيل (على سبيل المثال، المنشئ. AddAzureStorage()، المنشئ. AddServiceBus()، المنشئ. AddTimers()، وما إلى ذلك).

جرب الإصلاحات التالية:

  • عند التشغيل محليا، تأكد من استخدام Azure Functions Core Tools v4.0.5382 أو أعلى.
  • عند التشغيل في Azure:
    • تأكد من استخدام Azure Functions Runtime الإصدار 4.25 أو أعلى.

    • تأكد من استخدام Node.js v18 أو أعلى.

    • قم بتعيين إعداد FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR التطبيق إلى true. يوصى بهذا الإعداد لجميع تطبيقات النموذج v4 ويضمن أن تكون جميع أخطاء نقطة الإدخال مرئية في سجلات رؤى التطبيق. لمزيد من المعلومات، راجع مرجع إعدادات التطبيق لدالات Azure.

    • تحقق من سجلات تطبيق الوظائف بحثا عن أخطاء نقطة الإدخال. يوضح الاستعلام المثال التالي كيفية عرض أخطاء نقطة الإدخال لتطبيقك في اليوم الماضي:

      let myAppName = "<your app name>";
      let startTime = ago(1d);
      let endTime = now();
      union traces,requests,exceptions
      | where cloud_RoleName =~ myAppName
      | where timestamp between (startTime .. endTime)
      | where severityLevel > 2
      | where message has "entry point"
      
  • تأكد من أن تطبيقك يحتوي على بنية المجلد المطلوبة مع host.json في الجذر ومجلد لكل وظيفة تحتوي على ملف function.json .

طلب Undici ليس منشئا

إذا تلقيت الخطأ التالي في سجلات تطبيق الوظائف:

System.Private.CoreLib: استثناء أثناء تنفيذ الدالة: Functions.httpTrigger1. System.Private.CoreLib: النتيجة: استثناء الفشل: undici_1.Request ليس منشئا

تأكد من أنك تستخدم Node.js الإصدار 18.x أو أعلى.

فشل الكشف عن وقت تشغيل Azure Functions

إذا تلقيت الخطأ التالي في سجلات تطبيق الوظائف:

تحذير: فشل الكشف عن وقت تشغيل Azure Functions. تبديل حزمة "@azure/functions" إلى وضع الاختبار - لا يتم دعم جميع الميزات.

تحقق من ملفك package.json للحصول على مرجع إليه applicationinsights وتأكد من أن الإصدار أعلى ^2.7.1 أو أعلى. بعد تحديث الإصدار، قم بتشغيل npm install

الحصول على تعليمات من Microsoft

يمكنك الحصول على مزيد من المساعدة من Microsoft بإحدى الطرق التالية:

  • ابحث في المشكلات المعروفة في مستودع Azure Functions Node.js. إذا لم تظهر لك المشكلة المذكورة، فقم بإنشاء مشكلة جديدة وأخبرنا بما حدث.
  • إذا لم تتمكن من تشخيص مشكلتك باستخدام هذا الدليل، يتوفر مهندسو دعم Microsoft للمساعدة في تشخيص المشكلات المتعلقة بتطبيقك. تقدم Microsoft خطط دعم مختلفة. أنشئ تذكرة دعم في قسم الدعم + استكشاف الأخطاء وإصلاحها في صفحة تطبيق الوظائف في مدخل Microsoft Azure.

الخطوات التالية