أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
يتناول هذا الموضوع الأخطاء والتحذيرات التي قد تواجهها عند استخدام Edge Microgateway.
أخطاء عامة في التطبيق
HTTP 500، تعذّر في معالج الأخطاء: سيظهر هذا الرقم مع معظم الأخطاء، بالإضافة إلى بعض الأخطاء التي يتم عرضها من الأهداف. على وجه الخصوص، يتم استخدام ملف errors-middleware.js في جميع أنحاء وحدة microgateway-core. عند استخدامه، يكتب رموز الحالة في السجلّ باستخدام Edge Microgateway
logger object: logger.error(err, 'failed in error handler');. بالنسبة إلى الرموز التي تم تلقّيها من الأهداف بين 100 و300، يعيد ملف errors-middleware.js كتابة رمز الحالة إلى 500 ليتم إرجاعه إلى العميل.HTTP 404: قد تظهر هذه الحالة كعملية تتبُّع تسلسل استدعاء الدوال البرمجية مع الرسالة
no match found for [API_path_name].
أخطاء الوحدات والتحذيرات
يمكنك استخدام هذه المعلومات لضبط التنبيهات التي تساعدك في مراقبة عملية نشر Edge Microgateway وإدارتها.
تشير المصطلحات التالية، التي تظهر في مرجع الخطأ ضمن "المعالج"، إلى كيفية معالجة الأخطاء المختلفة في Edge Microgateway.
- assert: عادةً، يتوقّف Edge Microgateway عند تعذُّر تقييم عملية التأكيد. ومع ذلك، قد لا يكون هذا هو الحال دائمًا، لأنّ "عمليات التأكيد" تطرح استثناءات يمكن رصدها.
- throws: توقّف محتمل للنظام
- الدالة التنفيذية: يتم تمرير الخطأ إلى دالة تنفيذية وقد يواصل النظام عمله.
| النوع | رسالة | المعالِج | ملاحظات |
|---|---|---|---|
وحدة microgateway |
|||
| خطأ | يجب إدخال اسم المؤسسة | تأكيد الملكية | assert(options.org,"org is required"); |
| خطأ | يجب إدخال env | تأكيد الملكية | assert(options.env,"env is required") |
| خطأ | يجب إدخال اسم المستخدم | تأكيد الملكية | assert(options.username || options.token,"username is required"); |
| خطأ | كلمة المرور مطلوبة | تأكيد الملكية | assert(options.password || options.token,"password is required") |
| خطأ | يجب إدخال اسم المؤسسة | تأكيد الملكية | assert(options.org,"org is required"); |
| خطأ | يجب إدخال env | تأكيد الملكية | assert(options.env,"env is required") |
| خطأ | يجب إدخال اسم المستخدم | تأكيد الملكية | assert(options.username || options.token,"username is required"); |
| خطأ | كلمة المرور مطلوبة | تأكيد الملكية | assert(options.password || options.token,"password is required") |
| خطأ | يجب إدخال اسم المؤسسة | تأكيد الملكية | assert(options.org,"org is required"); |
| خطأ | يجب إدخال env | تأكيد الملكية | assert(options.env,"env is required") |
| خطأ | يجب إدخال اسم المؤسسة | تأكيد الملكية | assert(options.org,"org is required"); |
| خطأ | يجب إدخال env | تأكيد الملكية | assert(options.env,"env is required") |
| خطأ | يجب إدخال اسم المستخدم | تأكيد الملكية | assert(options.username, 'username is required'); |
| خطأ | كلمة المرور مطلوبة | تأكيد الملكية | assert(options.password, 'password is required'); |
| خطأ | يجب إدخال اسم المؤسسة | تأكيد الملكية | assert(options.org, 'org is required'); |
| خطأ | يجب إدخال env | تأكيد الملكية | assert(options.env, 'env is required'); |
| خطأ | يجب أن يتضمّن ملفًا مستهدفًا تم تعيينه | تأكيد الملكية | assert(targetFile, 'must have an assigned target file') |
| خطأ | يجب أن يتضمّن مفتاحًا | تأكيد الملكية | assert(key, 'must have a key'); |
| خطأ | يجب أن يكون لديه سر | تأكيد الملكية | assert(secret, 'must have a secret'); |
| خطأ | يجب ضبط dir | تأكيد الملكية | assert(dir, 'dir must be configured') |
| خطأ | يجب توفُّر معاودة الاتصال | تأكيد الملكية | assert(callback, 'callback must be present') |
| خطأ | يجب إدخال اسم المستخدم | تأكيد الملكية | assert(options.username, 'username is required'); |
| خطأ | كلمة المرور مطلوبة | تأكيد الملكية | assert(options.password, 'password is required'); |
| خطأ | يجب إدخال اسم المؤسسة | تأكيد الملكية | assert(options.org, 'org is required'); |
| خطأ | يجب إدخال env | تأكيد الملكية | assert(options.env, 'env is required'); |
| خطأ | يجب إدخال runtimeUrl | تأكيد الملكية | assert(options.runtimeUrl, 'runtimeUrl is required'); |
| خطأ | يجب إدخال mgmtUrl | تأكيد الملكية | assert(options.mgmtUrl, 'mgmtUrl is required'); |
| خطأ | يجب إدخال ملف | تأكيد الملكية | assert(options.file,"file is required") |
| خطأ | يجب أن يكون هناك هدف | تأكيد الملكية | assert(options.target, 'must have target'); |
| خطأ | لم يتم إعداد المكوّنات الإضافية | تأكيد الملكية | assert(config.edgemicro.plugins, 'plugins not configured'); |
| خطأ | دليل المكوّن الإضافي غير موجود: + pluginDir | تأكيد الملكية | assert(fs.existsSync(pluginDir), 'plugin dir does not exist: ' + pluginDir); |
| خطأ | plugin dir is not a directory: + pluginDir | تأكيد الملكية | assert(stat.isDirectory(), 'plugin dir is not a directory: ' + pluginDir); |
| خطأ | حدث خطأ أثناء قراءة دليل المكوّن الإضافي: + pluginDir | تأكيد الملكية | assert(dirs, 'error reading plugin dir: ' + pluginDir); |
| خطأ | يجب أن يتضمّن رمزًا مميزًا | تأكيد الملكية | assert(token, 'must have a token'); |
| خطأ | لا يمكن ترك configpath فارغًا | تأكيد الملكية | assert(config, 'configpath can't be empty'); |
| خطأ | يجب أن يتضمّن EDGEMICRO_KEY | تأكيد الملكية | assert(key, 'must have EDGEMICRO_KEY'); |
| خطأ | يجب توفير EDGEMICRO_SECRET | تأكيد الملكية | assert(secret, 'must have EDGEMICRO_SECRET'); |
| خطأ | لم يتم العثور على الإعداد | طرح | متعلّقة بملف YAML |
| خطأ | يبدو أنّ edgemicro قيد التشغيل حاليًا. | console.error | محاولة استبدال ملف .sock |
| خطأ | تعذّر التحقّق من حدوث تغيير في الإعدادات. ستتم إعادة المحاولة بعد | console.error | مشكلة في الاتصال بين الأجهزة الطرفية |
| خطأ | إذا كان الخادم لا يعمل، قد يكون ذلك بسبب إيقاف التشغيل السابق بشكل غير صحيح. | console.error | |
| خطأ | لم يتم العثور على %s، يُرجى تشغيل | console.error | Missing (.*), Please run |
| خطأ | تعذّرت إعادة تحميل edgemicro | console.error | مستوى الأمر |
| خطأ | تعذّر إيقاف edgemicro | console.error | مستوى الأمر |
| خطأ | Try removing ' + ipcPath + ' and start again' | console.error | |
| خطأ | لا يتوفّر "إعدادات ذاكرة التخزين المؤقت" + ذاكرة التخزين المؤقت + ". سيتم الخروج." | console.error | |
| خطأ | تعذّر كتابة ملف الإعداد: | console.error | سيتعذّر الإعداد |
| خطأ | لم يتم تنزيل ملف الإعداد: | console.error | سيتعذّر الإعداد |
| خطأ | تعذّر بدء تشغيل الميكروفون على الجهاز | console.error | يجب ألا يكون قيد التشغيل |
| خطأ | لم يتم تشغيل edgemicro. | console.error | التحقّق من العملية التي يجب ألا تكون مُدرَجة |
| خطأ | يجب إدخال env | console.error | متغيرات البيئة المطلوبة لتشغيل |
| خطأ | error - editing apiproxy Callout.xml | console.error | إذن الوصول إلى الملف |
| خطأ | error - editing apiproxy default.xml | console.error | إذن الوصول إلى الملف |
| خطأ | حدث خطأ أثناء التحقّق من الشهادة. جارٍ تثبيت شهادة جديدة. | console.error | لا يمكن استخدام المفتاح العام |
| خطأ | حدث خطأ أثناء استرداد المنطقة الخاصة بالمؤسسة | console.error | key-gen.js وcert-lib.js وprivate.js |
| خطأ | حدث خطأ أثناء تحميل بيانات الاعتماد | console.error | يتعذّر مزامنة المفتاح العام مع Edge |
| خطأ | فشل | console.error | key-gen.js |
| خطأ | تعذّر إعداد ملف configpath %s | console.error | تعذُّر تحميل الإعدادات |
| خطأ | ردّ غير صالح من واجهة برمجة التطبيقات الخاصة بالمنطقة | console.error | key-gen.js وcert-lib.js وprivate.js |
| خطأ | يجب إدخال المفتاح | console.error | المَعلمة |
| خطأ | يجب إدخال اسم المؤسسة | console.error | المَعلمة |
| خطأ | المنفذ غير متاح. | console.error | المَعلمة |
| خطأ | يجب إدخال سر | console.error | المَعلمة |
| خطأ | بروتوكول عنوان URL غير متاح: | console.error | تشير معلومات الإعداد إلى بروتوكول إنترنت غير مضمّن في نطاق Edge Microgateway |
| خطأ | التحقّق من حالة سلبية للإحصاءات: تعذّر | console.error | تعطُّل أو فشل محتمل |
| خطأ | التحقّق من الإحصاءات باستخدام الحمولة: تعذّر | console.error | تعطُّل أو فشل محتمل |
| خطأ | التحقّق من توفّر عنوان URL الخاص بالتمهيد:تعذّر | console.error | تعطُّل أو فشل محتمل |
| خطأ | التحقّق من توفّر jwt_public_key: تعذّر | console.error | تعطُّل أو فشل محتمل |
| خطأ | التحقّق من توفّر المنتجات: تعذّر | console.error | تعطُّل أو فشل محتمل |
| خطأ | التحقّق من الحصة باستخدام المنتجات التي تم إعدادها: تعذّر | console.error | تعطُّل أو فشل محتمل |
| تحذير | تعذّر استرداد الإعدادات من البوابة. سيتم المتابعة، وسيتم تجربة النسخة المخزّنة مؤقتًا. | console.error | |
| تحذير | تتوفّر آلة افتراضية مستندة إلى KVM في مؤسستك | console.log | |
| تحذير | تم نشره من قبل | console.log | |
| تحذير | لم يتم العثور على المكوّن الإضافي المتسلسل: | console.warn | |
| تحذير | المجلد pluginDir %s غير موجود | console.log | pluginDir (.*) غير موجود |
وحدة microgateway-core |
|||
| خطأ | لم يتم إعداد ملف الإعدادات | تأكيد الملكية | assert(config, 'config not initialized') |
| خطأ | يجب أن يتضمّن إعدادًا | تأكيد الملكية | assert(config, ' must have a config') |
| خطأ | يجب أن يتضمّن إعدادات | تأكيد الملكية | assert(config, 'must have config') |
| خطأ | يجب أن يتضمّن الإعداد معرّفًا فريدًا | تأكيد الملكية | assert(config.uid, 'config must have uid'); |
| خطأ | يجب أن يتضمّن ملف الإعداد config.edgemicro.logging في الإعدادات | تأكيد الملكية | assert(logConfig, 'must have config.edgemicro.logging in config'); |
| خطأ | يجب أن تتضمّن طريقة الطلب | تأكيد الملكية | assert(httpLibrary.request, 'must have request method'); |
| خطأ | يجب أن يتم تحميل المكوّن الإضافي في الذاكرة | تأكيد الملكية | assert(options.plugin, "must have plugin loaded in memory"); |
| خطأ | يجب أن تكون init دالة | تأكيد الملكية | assert(_.isFunction(options.plugin.init), 'init must be a function'); |
| خطأ | يجب توفّر اسم للمكوّن الإضافي | تأكيد الملكية | assert(options.pluginName, "must have plugin name"); |
| خطأ | تجاهُل معالجات المكوّنات الإضافية غير الصالحة + الاسم | تأكيد الملكية | assert(_.isObject(middleware), 'ignoring invalid plugin handlers ' + name); |
| خطأ | يجب أن تحتوي الخيارات على إعدادات | تأكيد الملكية | assert(config, 'options must contain config') |
| خطأ | يجب إدخال اسم للمكوّن الإضافي | تأكيد الملكية | assert(name,"plugin must have a name") |
| خطأ | يجب أن يكون الاسم سلسلة | تأكيد الملكية | assert(_.isString(name),"name must be a string"); |
| خطأ | يجب أن تكون الإضافة دالة | تأكيد الملكية | assert(_.isFunction(plugin),"plugin must be a function(config,logger,stats){return {onresponse:function(req,res,data,next){}}}"); |
| خطأ | يجب أن يتضمّن مفتاحًا | تأكيد الملكية | assert(key, 'must have a key'); |
| خطأ | يجب أن يكون لديه سر | تأكيد الملكية | assert(secret, 'must have a secret'); |
| خطأ | يجب أن يتضمّن دليل إعدادات المصدر | تأكيد الملكية | assert(source, 'must have a source config directory'); |
| خطأ | حدث خطأ أثناء تحميل المكوّن الإضافي | console.error | لم يتم تحميل المكوّن الإضافي |
| خطأ | تعذّر تنفيذ الإجراء في معالج الأخطاء | callback | دالة HTTP server.on() |
| خطأ | طول العنوان أكبر من الحجم المسموح به | خطأ في بروتوكول نقل الروابط النصية (HTTP) | لا يتم تشغيل المكوّن الإضافي |
| خطأ | انتهى الردّ قبل أن يتم إنجاز العمل | logger.error | لا يتم تشغيل المكوّن الإضافي المستهدف |
| خطأ | حدث خطأ في المعالج | callback | تسجيل الخطأ من المكوّن الإضافي (catch) |
| خطأ | حدث خطأ أثناء بدء تطبيق Edge المصغّر | callback | لا يبدأ Edge Microgateway |
| خطأ | يجب أن يكون المكوّن الإضافي دالة | طرح | |
| تحذير | console.error | تحذيرات | كتابة السجلّ |
| تحذير | خطأ targetRequest | استدعاء معالجة أخطاء الهدف | حدث خطأ في برنامج HTTP أثناء الاتصال بالهدف |
| تحذير | targetResponse error | استدعاء معالجة أخطاء الهدف | حدث خطأ في خادم HTTP المستهدف أثناء الاتصال بالهدف كما يظهر في البرنامج |
وحدة microgateway-config |
|||
| خطأ | allow_message | تأكيد الملكية | assert(+config.quota.allow > 0, allow_message); |
| خطأ | لم يتم العثور على الإعداد | طرح | ملف yaml للإعداد |
| خطأ | الإعدادات فارغة | طرح | ملف yaml للإعداد |
| خطأ | الإعداد ليس ملفًا | طرح | ملف yaml للإعداد |
| خطأ | لم يتم تحديد الإعداد | تأكيد الملكية | assert(config, 'config is not defined'); |
| خطأ | قيمة config.analytics.batchSize غير صالحة | تأكيد الملكية | assert(+config.analytics.batchSize > 0, 'config.analytics.batchSize is invalid'); |
| خطأ | config.analytics.batchSize ليس رقمًا | تأكيد الملكية | assert(typeof config.analytics.batchSize === 'number', 'config.analytics.batchSize is not a number'); |
| خطأ | config.analytics.bufferSize غير صالح | تأكيد الملكية | assert(+config.analytics.bufferSize > 0, 'config.analytics.bufferSize is invalid'); |
| خطأ | config.analytics.bufferSize ليس رقمًا | تأكيد الملكية | assert(typeof config.analytics.bufferSize === 'number', 'config.analytics.bufferSize is not a number'); |
| خطأ | config.analytics.flushInterval غير صالح | تأكيد الملكية | assert(+config.analytics.flushInterval > 0, 'config.analytics.flushInterval is invalid'); |
| خطأ | config.analytics.flushInterval ليس رقمًا | تأكيد الملكية | assert(typeof config.analytics.flushInterval === 'number', 'config.analytics.flushInterval is not a number'); |
| خطأ | config.analytics.proxy ليس "dummy" | تأكيد الملكية | assert(config.analytics.proxy === 'dummy', 'config.analytics.proxy is not "dummy"'); |
| خطأ | لم يتم تحديد config.analytics.proxy | تأكيد الملكية | assert(config.analytics.proxy, 'config.analytics.proxy is not defined'); |
| خطأ | config.analytics.proxy_revision ليس رقمًا | تأكيد الملكية | assert(typeof config.analytics.proxy_revision === 'number', 'config.analytics.proxy_revision is not a number'); |
| خطأ | لم يتم تحديد config.analytics.proxy_revision | تأكيد الملكية | assert(config.analytics.proxy_revision, 'config.analytics.proxy_revision is not defined'); |
| خطأ | قيمة config.analytics.source ليست "microgateway" | تأكيد الملكية | assert(config.analytics.source === 'microgateway', 'config.analytics.source is not "microgateway"'); |
| خطأ | لم يتم تحديد config.analytics.source | تأكيد الملكية | assert(config.analytics.source, 'config.analytics.source is not defined'); |
| خطأ | config.analytics.uri ليس سلسلة | تأكيد الملكية | assert(typeof config.analytics.uri === 'string', 'config.analytics.uri is not a string'); |
| خطأ | لم يتم تحديد config.analytics.uri | تأكيد الملكية | assert(config.analytics.uri, 'config.analytics.uri is not defined'); |
| خطأ | لم يتم تحديد config.apikeys.public_key | تأكيد الملكية | assert(typeof config.apikeys.public_key === 'string', 'config.apikeys.public_key is not defined'); |
| خطأ | لم يتم تحديد config.edge_config | تأكيد الملكية | assert(config.edge_config, 'config.edge_config is not defined'); |
| خطأ | لم يتم تحديد config.edge_config.bootstrap | تأكيد الملكية | assert(config.edge_config.bootstrap, 'config.edge_config.bootstrap is not defined'); |
| خطأ | لم يتم تحديد config.edge_config.jwt_public_key | تأكيد الملكية | assert(config.edge_config.jwt_public_key, 'config.edge_config.jwt_public_key is not defined'); |
| خطأ | يجب تحديد config.edge_config.proxy إذا تم تحديد config.edge_config.proxy_tunnel | تأكيد الملكية | assert(typeof config.edge_config.proxy !== 'undefined', 'config.edge_config.proxy must be defined if config.edge_config.proxy_tunnel is defined'); |
| خطأ | config.edge_config.proxy_tunnel ليس قيمة منطقية | تأكيد الملكية | assert(typeof config.edge_config.proxy_tunnel === 'boolean', 'config.edge_config.proxy_tunnel is not a boolean'); |
| خطأ | config.edge_config.refresh_interval ليس رقمًا | تأكيد الملكية | assert(typeof config.edge_config.refresh_interval === 'number', 'config.edge_config.refresh_interval is not a number'); |
| خطأ | قيمة config.edge_config.refresh_interval صغيرة جدًا (الحد الأدنى هو ساعة واحدة) | تأكيد الملكية | assert(config.edge_config.refresh_interval >= 3600000, 'config.edge_config.refresh_interval is too small (min 1h)'); |
| خطأ | config.edge_config.retry_interval ليس رقمًا | تأكيد الملكية | assert(typeof config.edge_config.retry_interval === 'number', 'config.edge_config.retry_interval is not a number'); |
| خطأ | قيمة config.edge_config.retry_interval صغيرة جدًا (الحد الأدنى 5 ثوانٍ) | تأكيد الملكية | assert(config.edge_config.retry_interval >= 5000, 'config.edge_config.retry_interval is too small (min 5s)'); |
| خطأ | لم يتم تحديد config.edgemicro | تأكيد الملكية | assert(config.edgemicro, 'config.edgemicro is not defined'); |
| خطأ | لم يتم تحديد config.edgemicro.logging | تأكيد الملكية | assert(config.edgemicro.logging, 'config.edgemicro.logging is not defined'); |
| خطأ | لم يتم تحديد config.edgemicro.logging.dir | تأكيد الملكية | if (!config.edgemicro.logging.to_console) assert(config.edgemicro.logging.dir, 'config.edgemicro.logging.dir is not defined'); |
| خطأ | لم يتم تحديد config.edgemicro.logging.level | تأكيد الملكية | assert(config.edgemicro.logging.level, 'config.edgemicro.logging.level is not defined'); |
| خطأ | config.edgemicro.max_connections ليس رقمًا | تأكيد الملكية | assert(typeof config.edgemicro.max_connections === 'number', 'config.edgemicro.max_connections is not a number'); |
| خطأ | لم يتم تحديد config.edgemicro.max_connections | تأكيد الملكية | assert(config.edgemicro.max_connections, 'config.edgemicro.max_connections is not defined'); |
| خطأ | config.edgemicro.plugins.sequence ليس مصفوفة | تأكيد الملكية | assert(Array.isArray(config.edgemicro.plugins.sequence), 'config.edgemicro.plugins.sequence is not an array'); |
| خطأ | لم يتم تحديد config.edgemicro.port | تأكيد الملكية | assert(config.edgemicro.port, 'config.edgemicro.port is not defined'); |
| خطأ | لم يتم تحديد config.oauth.allowInvalidAuthorization | تأكيد الملكية | assert(typeof config.oauth.allowInvalidAuthorization === 'boolean', 'config.oauth.allowInvalidAuthorization is not defined'); |
| خطأ | لم يتم تحديد config.oauth.allowNoAuthorization | تأكيد الملكية | assert(typeof config.oauth.allowNoAuthorization === 'boolean', 'config.oauth.allowNoAuthorization is not defined'); |
| خطأ | لم يتم تحديد config.oauth.public_key | تأكيد الملكية | assert(typeof config.oauth.public_key === 'string', 'config.oauth.public_key is not defined'); |
| خطأ | لم يتم تحديد config.oauthv2.public_key | تأكيد الملكية | assert(typeof config.oauthv2.public_key === 'string', 'config.oauthv2.public_key is not defined'); |
| خطأ | لم يتم تحديد config.proxies | تأكيد الملكية | assert(config.proxies, 'config.proxies is not defined'); |
| خطأ | لم يتم تحديد config.proxy[ + index + ].base_path | تأكيد الملكية | assert(proxy.base_path, 'config.proxy[' + index + '].base_path is not defined'); |
| خطأ | config.proxy[ + index + ].max_connections ليس رقمًا | تأكيد الملكية | assert(typeof proxy.max_connections === 'number', 'config.proxy[' + index + '].max_connections is not a number'); |
| خطأ | لم يتم تحديد config.proxy[ + index + ].max_connections | تأكيد الملكية | assert(proxy.max_connections, 'config.proxy[' + index + '].max_connections is not defined'); |
| خطأ | لم يتم تحديد config.proxy[ + index + ].name | تأكيد الملكية | assert(proxy.name, 'config.proxy[' + index + '].name is not defined'); |
| خطأ | لم يتم تحديد config.proxy[ + index + ].proxy_name | تأكيد الملكية | assert(proxy.target_name, 'config.proxy[' + index + '].proxy_name is not defined'); |
| خطأ | لم يتم تحديد config.proxy[ + index + ].revision | تأكيد الملكية | assert(proxy.revision, 'config.proxy[' + index + '].revision is not defined'); |
| خطأ | لم يتم تحديد config.proxy[ + index + ].url | تأكيد الملكية | assert(proxy.url, 'config.proxy[' + index + '].url is not defined'); |
| خطأ | config.quota.allow ليس رقمًا | تأكيد الملكية | assert(typeof config.quota.allow === 'number', 'config.quota.allow is not a number'); |
| خطأ | لم يتم تحديد config.quota.allow | تأكيد الملكية | assert(config.quota.allow, 'config.quota.allow is not defined'); |
| خطأ | config.quota.interval ليس رقمًا | تأكيد الملكية | assert(typeof config.quota.interval === 'number', 'config.quota.interval is not a number'); |
| خطأ | لم يتم تحديد config.quota.interval | تأكيد الملكية | assert(config.quota.interval, 'config.quota.interval is not defined'); |
| خطأ | لم يتم تحديد config.spikearrest | تأكيد الملكية | assert(config.spikearrest, 'config.spikearrest is not defined'); |
| خطأ | config.spikearrest.allow غير صالح | تأكيد الملكية | assert(+config.spikearrest.allow > 0, 'config.spikearrest.allow is invalid'); |
| خطأ | config.spikearrest.allow ليس رقمًا | تأكيد الملكية | assert(typeof config.spikearrest.allow === 'number', 'config.spikearrest.allow is not a number'); |
| خطأ | لم يتم تحديد config.spikearrest.allow | تأكيد الملكية | assert(config.spikearrest.allow, 'config.spikearrest.allow is not defined'); |
| خطأ | config.spikearrest.bufferSize غير صالح | تأكيد الملكية | assert(+config.spikearrest.bufferSize > 0, 'config.spikearrest.bufferSize is invalid'); |
| خطأ | config.spikearrest.bufferSize ليس رقمًا | تأكيد الملكية | assert(typeof config.spikearrest.bufferSize === 'number', 'config.spikearrest.bufferSize is not a number'); |
| خطأ | لم يتم تحديد config.spikearrest.timeUnit | تأكيد الملكية | assert(config.spikearrest.timeUnit, 'config.spikearrest.timeUnit is not defined'); |
| خطأ | خطأ فادح: حدث خطأ أثناء تحليل قائمة المنتجات التي تم تنزيلها | callback | |
| خطأ | خطأ فادح: حدث خطأ أثناء تحليل قائمة الخوادم الوكيلة التي تم تنزيلها | callback | |
| خطأ | تم رصد خطأ في إعدادات المنتج | console.error | يليها console.warn('using old cached configuration'); |
| خطأ | حدث خطأ أثناء قراءة الإعدادات من | طرح | ملف yaml للإعداد |
| خطأ | حدث خطأ أثناء حفظ الإعدادات في | callback | ملف yaml للإعداد |
| خطأ | fatal: cached config not available, unable to continue | callback | |
| خطأ | interval_message | تأكيد الملكية | assert(+config.quota.interval > 0, interval_message); |
| خطأ | بروتوكول غير صالح لـ config.edge_config.proxy (من المتوقّع استخدام http: أو https:: + proxy_url.protocol) | تأكيد الملكية | assert(proxy_url.protocol === 'http:' || proxy_url.protocol === 'https:', 'invalid protocol for config.edge_config.proxy (expected http: or https:): ' + proxy_url.protocol); |
| خطأ | مضيف وكيل غير صالح لـ config.edge_config.proxy | تأكيد الملكية | assert(proxy_url.hostname, 'invalid proxy host for config.edge_config.proxy: ' + proxy_url.hostname); |
| خطأ | يبدو أنّه لم يتم إعداد ميزة "الميكروفون على الجهاز"، يُرجى الاطّلاع على دليل المشرف | callback | النتيجة: تعذُّر تحميل الإعدادات |
| خطأ | المفتاح غير متوفّر | تأكيد الملكية | assert(keys.key, 'key is missing'); |
| خطأ | يجب توفُّر configDir | تأكيد الملكية | assert(configDir, 'must have configDir') |
| خطأ | خيارات لا غنى عنها | تأكيد الملكية | assert(options, 'must have options'); |
| خطأ | يجب أن يتضمّن المصدر | تأكيد الملكية | assert(source, 'must have source') |
| خطأ | يجب أن يتضمّن مصدرًا لتحميل البيانات منه | تأكيد الملكية | assert(options.source, 'must have source to load from') |
| خطأ | يجب توفير targetFile | تأكيد الملكية | assert(fileName, 'must have targetFile') |
| خطأ | لا يمكن أن تكون الخيارات فارغة | تأكيد الملكية | assert(options, 'options cannot be null'); |
| خطأ | لا يمكن أن تكون مفاتيح الخيارات فارغة | تأكيد الملكية | assert(options.keys, 'options.keys cannot be null'); |
| خطأ | port_message | تأكيد الملكية | assert(+config.edgemicro.port < 65536, port_message); |
| خطأ | يجب أن تكون المنتجات مصفوفة | تأكيد الملكية | assert(Array.isArray(products), 'products should be an array'); |
| خطأ | يجب أن تكون "proxies for product ' + product + ' عبارة عن مصفوفة" | تأكيد الملكية | assert(Array.isArray(product.proxies), 'proxies for product ' + product + ' should be an array'); |
| خطأ | المفتاح السري غير متوفّر | تأكيد الملكية | assert(keys.secret, 'secret is missing'); |
| خطأ | لم يتم ضبط الهدف | تأكيد الملكية | assert(target, 'target is not set'); |
| تحذير | حدث خطأ أثناء تنزيل الإعدادات، يُرجى التحقّق من إعدادات Bootstrap | console.warn | |
| تحذير | failed to download jwt_public_key | console.warn | |
| تحذير | لم يتم تفعيل مفاتيح jwk | console.warn | |
| تحذير | message, 'download from', url, 'returned' | console.warn | Search for: (.*)\sdownload from\s(.*)\sreturned |
| تحذير | لم يتم العثور على أي منتجات صغيرة في الردّ | console.warn | |
| تحذير | لم يتم العثور على أي وكلاء مصغّرين على الحافة في المؤسسة | console.warn | |
| تحذير | لم يتم العثور على أي وكلاء مصغّرين على الحافة في الرد | console.warn | |
| تحذير | لم يتم العثور على منتجات في المؤسسة | console.warn | |
| تحذير | لم يتم العثور على أي منتجات في الردّ | console.warn | |
| تحذير | استخدام الإعدادات القديمة المخزّنة مؤقتًا | console.warn | |
وحدة microgateway-plugins |
|||
| خطأ | لم يتم العثور على الإعداد | طرح | ذات صلة بملف yaml |
| خطأ | apikey | استجابة HTTP | أخطاء في المكوّن الإضافي apiky |
| خطأ | bauth | استجابة HTTP | أعطال في المكوّن الإضافي bauth |
| خطأ | extauth | استجابة HTTP | أخطاء في المكوّن الإضافي extauth |
| خطأ | Oauth | استجابة HTTP | أعطال في المكوّن الإضافي OAuth |
| تحذير | حدث خطأ أثناء معالجة إحصاءات Apigee. السماح بمواصلة معالجة الطلب | logger.error | |
| تحذير | تجاهل الخطأ | console.warn | الإضافات apikeys وoauth وoauthv2 |
| تحذير | حدث خطأ في تحليل jwt: | console.warn | |
| تحذير | يفتقر عنصر استجابة Oath إلى setHeader | console.warn | يشير خطأ مَعلمة OAuth إلى أنّه لن يتم الإبلاغ عن بعض الأخطاء. |
| تحذير | لم يتم توفير عنصر ردّ القسم من خلال وقت التشغيل | console.warn | خطأ في مَعلمة OAuth |
| تحذير | لم يتم توفير عنصر إحصاءات Oath بواسطة وقت التشغيل | console.warn | خطأ في مَعلمة OAuth |
وحدة apigeetool-node |
|||
| خطأ | تعذّر حذف ذاكرة التخزين المؤقت برمز الحالة %d', res.statusCode | callback | تم طرحها في deletecache.js. رمز الحالة من Apigee Edge يتم تمرير خطأ تتبُّع تسلسل استدعاء الدوال البرمجية إلى دالة رد الاتصال مع الرسالة التالية: done(new Error(errMsg)); |
| خطأ | تعذّر حذف المنتج مع رمز الحالة %d', res.statusCode | callback | تم طرحها في deleteproduct.js. رمز الحالة من Apigee Edge يتم تمرير خطأ تتبُّع تسلسل استدعاء الدوال البرمجية إلى دالة رد الاتصال مع الرسالة التالية: done(new Error(errMsg)); |
| خطأ | يجب تحديد org وapi وrevision. | callback | تم طرحها في fetchproxy.js. حدث خطأ في الإعدادات. |
| خطأ | حدث الخطأ %d عند جلب الخادم الوكيل: %j | callback | تم طرحها في fetchproxy.js. رمز حالة غير 200 |
| خطأ | تعذّر إنشاء التطبيق برمز الحالة %d | callback | يتم طرح هذا الخطأ في createapp.js. يُعيد جميع الأخطاء إلى عمليات معاودة الاتصال كأخطاء تتبُّع تسلسل استدعاء الدوال البرمجية. لا يتم عرض أي نواتج في وحدة التحكّم أو إدخالات في السجلّ. |
| خطأ | تعذّر تنفيذ الأمر command + ' مع رمز الحالة %d | callback | تم طرحها في command-utils.js. بالنسبة إلى أي أمر يتم تحليله وتمريره إلى هذه الوحدة، سيؤدي أي رمز غير 200 أو 201 إلى إنشاء رسالة خطأ. تنسيق هذه الرسالة بدون طباعتها تمرِّر هذه السمة خطأ في تقرير تتبُّع تسلسل استدعاء الدوال البرمجية مع الرسالة إلى الدوالّ الرجعية. |
| خطأ | حدث الخطأ %d أثناء استرجاع عملية المشاركة: %s | callback | Thrown in fetchsharedflow.js. أي حالة HTTP غير 200 إذا نجحت العملية ولكن تعذّر كتابة ملف، سيتم عرض الرسالة التالية في وحدة التحكّم: Failed to write file Error text: [stack_trace_error] |
| خطأ | تعذّر إنشاء KeySecret مع رمز الحالة %d"، res.statusCode | callback | يتم طرح هذا الخطأ في createappkey.js. بالنسبة إلى رموز حالة HTTP من Apigee Edge التي لا تتضمّن 200 أو 201 |
| خطأ | تعذّر إنشاء ذاكرة التخزين المؤقت مع رمز الحالة %d', res.statusCode | callback | يتم طرحها في createcache.js. بالنسبة إلى رموز حالة HTTP من Apigee Edge التي ليست 200 أو 201 |
| خطأ | تعذّر إنشاء المنتج برمز الحالة %d', res.statusCode | callback | تم طرحه في createproduct.js. بالنسبة إلى رموز حالة HTTP من Apigee Edge التي ليست 201 إذا كانت حالة HTTP هي 201 ولكن الرد يتضمّن JSON للخطأ، يتم إعادة توجيه JSON للخطأ إلى دالة الرجوع. |
| خطأ | تعذّر حذف التطبيق برمز الحالة %d', res.statusCode | callback | يتم طرحها في deleteapp.js. بالنسبة إلى رموز حالة HTTP من Apigee Edge التي لا تساوي 200 إذا كانت حالة HTTP هي 200 ولكن الرد يتضمّن JSON للخطأ، يتم إعادة توجيه JSON للخطأ إلى دالة معاودة الاتصال. |
| خطأ | تعذّر إنشاء حساب المطوِّر برمز الحالة %d', res.statusCode | callback | تم طرحها في createdeveloper.js. بالنسبة إلى رموز حالة HTTP من Apigee Edge التي ليست 201 إذا كانت حالة HTTP هي 201 ولكن الرد يتضمّن JSON للخطأ، يتم إعادة توجيه JSON للخطأ إلى دالة الرجوع. |
| خطأ | تعذّر حذف حساب المطوِّر برمز الحالة %d', res.statusCode | callback | تم طرحها في deletedeveloper.js. بالنسبة إلى رموز حالة HTTP من Apigee Edge التي لا تساوي 200 إذا كانت حالة HTTP هي 200 ولكن الرد يتضمّن JSON للخطأ، يتم إعادة توجيه JSON للخطأ إلى دالة معاودة الاتصال. |
أخطاء في المكوّن الإضافي
accesscontrol plug-in
This section describes the error codes and messages that are returned by the
accesscontrol plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| Not printed | Forbidden | 403 | Access control rule |
accumulate-request plug-in
This section describes the error codes and messages that are returned by the
accumulate-request plug-in with descriptions of possible causes.
No errors generated.
accumulate-resopnse plug-in
This section describes the error codes and messages that are returned by the
accumulate-response plug-in with descriptions of possible causes.
No errors generated.
analytics plug-in
This section describes the error codes and messages that are returned by the
analytics plug-in with descriptions of possible causes.
Errors encountered processing Apigee analytics are written to the Edge Microgateway log. Edge Microgateway processing continues.
apikeys plug-in
This section describes the error codes and messages that are returned by the
apikeys plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_request | Invalid Request | 400 | allowNoAuthorization == false
No Authorization header in the HTTP request allowOAuthOnly == true |
| invalid_request | API Key Verification URL not configured | 400 | Verification API service not in header. |
| access_denied | Copy service message | 403 | In response to the auth service timeout |
| missing_authorization | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other not categorized |
bauth plug-in
This section describes the error codes and messages that are returned by the
bauth plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| missing_authorization | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other not categorized |
cloud-foundry-route-service plug-in
This section describes the error codes and messages that are returned by the
cloud-foundry-route-service plug-in with descriptions of possible causes.
No errors generated.
cors plug-in
This section describes the error codes and messages that are returned by the
cors plug-in with descriptions of possible causes.
No errors generated.
eurekaclient plug-in
This section describes the error codes and messages that are returned by the
eurekaclient plug-in with descriptions of possible causes.
The eurekaclient plug-in throws a few console errors only, including a stack trace error on failed start and a warning about the target endpoint from Eureka not found.
extauth plug-in
This section describes the error codes and messages that are returned by the
extauth plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_request | Invalid Request | 400 | allowNoAuthorization == false
No Authorization header in the HTTP request allowOAuthOnly == true |
| invalid_request | API Key Verification URL not configured | 400 | Verification API service not in header. |
| access_denied | Copy service message | 403 | In response to the auth service timeout |
| missing_authorization | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other not categorized |
header-uppercase plug-in
This section describes the error codes and messages that are returned by the
header-uppercase plug-in with descriptions of possible causes.
No errors generated.
healthcheck plug-in
This section describes the error codes and messages that are returned by the
healthcheck plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| 503 | Too busy. No messages in HTTP or console | ||
| default | Application is not running on specified application port | 500 | All other not categorized |
invalidHeader plug-in
This section describes the error codes and messages that are returned by the
invalidHeader plug-in with descriptions of possible causes.
No errors generated.
json2xml plug-in
This section describes the error codes and messages that are returned by the
json2xml plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| default | 500 | All other not categorized |
monitor plug-in
This section describes the error codes and messages that are returned by the
monitor plug-in with descriptions of possible causes.
No errors generated.
oauth plug-in (v1)
This section describes the error codes and messages that are returned by the
oauth plug-in (v1) with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_request | Invalid Authorization Header | 400 |
|
| invalid_request | API Key Verification URL not configured | 400 | Verification API service not in header. |
| Access_denied | Copy service message | 403 | In response to the auth service timeout |
| invalid_token | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization is set |
| invalid_token | token could not be parsed | 401 | allowAPIKeyOnly == true
Bad token delivered |
| missing_authorization | Missing Authorization header | 401 | allowNoAuthorization == false
Authorization-header in HTTP allowOAuthOnly == true |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other uncategorized responses |
oauthv2 plug-in
This section describes the error codes and messages that are returned by the
oauthv2 plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_request | Invalid Authorization Header | 400 |
|
| invalid_request | API Key Verification URL not configured | 400 | Verification API service not in header |
| access_denied | Copy service message | 403 | In response to the auth service timeout |
| invalid_token | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization is set |
| invalid_token | token could not be parsed | 401 | allowAPIKeyOnly == true
Bad token delivered |
| missing_authorization | Missing Authorization header | 401 | allowNoAuthorization == false
Authorization-header in HTTP allowOAuthOnly == true |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other uncategorized responses |
quota plug-in
This section describes the error codes and messages that are returned by the
quota plug-in with descriptions of possible causes.
Defers to volos quota/apigee.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Not authorized to call the remote proxy. Check the "key" parameter. | 404 | In response to the auth timeout |
| default | 500 | All other not categorized | |
| throw | uri parameter must be specified | apigeequota.js | |
| throw | key parameter must be specified | apigeequota.js | |
| callback | Apigee Remote Proxy not found at: ' + self.uri + '. Check your configuration | apigeequota.js | |
| callback | HTTP error getting proxy version: %d. Check the "uri" parameter. | apigeequota.js | |
| callback | Quotas with a fixed starting time are not supported | apigeequota.js | |
| callback | Error updating remote quota: %d %s', resp.statusCode, body | apigeequota.js |
If there is an error on an entry in the product list, the product list will stop being processed.
quota-memory plug-in
This section describes the error codes and messages that are returned by the
quota-memory plug-in with descriptions of possible causes.
Defers to volos quota/apigee.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Not authorized to call the remote proxy. Check the "key" parameter. | 404 | In response to the auth timeout |
| default | 500 | All other not categorized | |
| throw | start time not allowed for month time units | quota.js. volos error on time format. | |
| throw | Invalid start time %s | quota.js. volos error on time format. | |
| throw | Invalid timeUnit %s | quota.js. volos error on time format. |
If there is an error on an entry in the product list, the product list will stop being processed.
spikearrest plug-in
This section describes the error codes and messages that are returned by the
spikearrest plug-in with descriptions of possible causes.
Defers to volos spikearrest/memory.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| SpikeArrest engaged | 503 | Traffic spike. This is expected behavior. | |
| throw | Invalid timeUnit %s | spikearrest.js | |
| callback | key must be a string | spikearrest.js | |
| throw | %s must be a number', name | spikearrest.js |
transform-uppercase plug-in
This section describes the error codes and messages that are returned by the
transform-uppercase plug-in with descriptions of possible causes.
No errors generated.