@sentry/browser
@sentry/node
raven-js
raven-node
_ (غراب للعقدة) _5.10.2
غالبًا ما يصاب مشروعي بخطأ مثل رفض وعد حدث بدون خطأ تم التقاطه باستخدام المفاتيح: currentTarget، isTrusted، target، type , بدون أي معلومات مفيدة. وبيانات إضافية
__serialized__ = {
currentTarget: [object Null],
isTrusted: [Circular ~],
target: head > script[type="text/javascript"],
type: error
}
يشبه مثيل الحدث. مع المعلومات المحدودة , لا أعرف من أين يتم تشغيل هذا الخطأ هل واجه أي شخص نفس المشكلة؟
لقد بدأنا أيضًا في رؤية هذه في الأسبوعين الماضيين. لقد بدأت للتو في البحث في الأمر ، لذا فليس لدي المزيد من التفاصيل حول سبب ذلك.
بالمثل هنا ، الآن على Sentry v5.15.5.
هل يمكن لأي شخص تقديم أي رابط لهذا النوع من الأحداث التي تم التقاطها في Sentry؟ يبدو أنه خطأ في تحميل البرنامج النصي (لاحظ target
أن هذا الحدث قد بدأ في)
kamilogorek هل يمكنك من فضلك إرسال بريد إلكتروني لشركتك؟ يمكنني مشاركة أمثلة من الأحداث.
Santas [email protected]
إذا كنت بحاجة إلى المزيد من الأمثلة ، فيمكنني إرسال بعضها أيضًا إلى
sheelah نعم ، من فضلك
sheelah ليس هناك الكثير يمكننا تحسينه هنا ، onunhandledrejection
(نفس الشيء ينطبق على onerror
في وصف OP).
https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event
ومع ذلك ، لا يوجد شيء يمنع أي شخص من تمرير أي أشياء عشوائية هناك.
وبالتالي فإن الكود مثل هذا Promise.reject("whatever")
أو Promise.reject(jQueryBecauseWhyNot)
هو كود JS صالح تمامًا.
عندما نواجه شيئًا ليس بقيمة أولية ، كائنًا يحتوي على تتبع المكدس (على سبيل المثال Error
) أو استثناء DOM داخلي ، يتعين علينا الرجوع إلى تسلسل الكائن البسيط ومحاولة استخراج أي معلومات يمكننا الحصول عليها منه. يمكنك مشاهدة ملف eventbuilder.ts
للحصول على قائمة بالمسارات المحتملة التي يمكن أن يتخذها "أي قيمة عشوائية" تم تمريرها إلى معالج الأحداث - https://github.com/getsentry/sentry-javascript/blob/master/packages/ المتصفح / src / eventbuilder.ts # L17 -L80
لسوء الحظ ، لست متأكدًا مما إذا كان بإمكاننا جعلها أكثر عمومية للتعامل مع المزيد من أنواع المدخلات.
إذا كان لدى أي شخص أي تعليقات بخصوص هذه العملية ، فأنا منفتح تمامًا على الاقتراحات.
(تمت الإجابة هنا بدلاً من بريدك الإلكتروني ، لإبقاء المحادثة عامة لأي شخص آخر)
من ملاحظاتي:
ZXing
و browser-image-compression
، لكن لا توجد نصوص برمجية للتتبع تابعة لجهات خارجية ؛ProgressEvent
، وليس مجرد حدث - والذي يبدو أنه جزء من مكتبة طلبات HTTP (أنا أستخدم axios).ADDITIONAL DATA
__serialized__ | {
currentTarget: [object Null],
isTrusted: [Circular ~],
target: [object FileReader],
type: error}
-- | --
لقد تلقيت للتو تقريرًا يتضمن "رفض الوعد بعدم وجود خطأ تم التقاطه بقيمة: خالية". على غرار @ anton-bot المذكور أعلاه ، كان المستخدم المتأثر يستخدم Safari 13.1.2 على نظام التشغيل Mac OS X 10.15.6.
لقد ألقيت نظرة على رمز التطبيق المترجم الخاص بي لمكالمات reject(
حيث يتم توفير عنصر null
، لكن لم أتمكن من العثور على أي منها ، لذلك كنت أتساءل عما إذا كان قد يكون امتدادًا للمتصفح أو ثالثًا نص الحزب. نظرًا لعدم وجود أثر للمكدس أو فتات الخبز ، فمن الصعب جدًا معرفة ما حدث بالضبط.
لقد شاهدت هذا أيضًا خلال الأسبوعين الماضيين. على موقعنا ، رأيناها فقط على الصفحات التي تستخدم واجهة برمجة تطبيقات جافا سكريبت لخرائط جوجل لذلك لدي شعور بأنها قد تكون مرتبطة بذلك. هل يرى أي شخص آخر هذا على عناوين URL التي تستخدم خرائط Google؟
تحرير: حتى الآن رأينا المشكلة على iOS و Android
تحرير: بيانات إضافية:
{
currentTarget: [object Null],
isTrusted: [Circular ~],
target: head > script[type="text/javascript"],
type: error
}
asbjornh كلا ، ليس لدي خرائط Google في صفحتي
kamilogorek هل البيانات الإضافية لـ OP (والبيانات الخاصة بي) ناتجة عن شيء مثل هذا Promise.reject(new Event("error"))
؟ أم أن أحداث Sentry لهذا الموقف تحتوي دائمًا على حمولات تشبه أحداث المتصفح؟
asbjornh نعم ، ثم يمر عبر هذا التدفق - https://github.com/getsentry/sentry-javascript/blob/caff9e7b308f99f04443d57d990c252a51a153bf/packages/browser/src/eventbuilder.ts#L97 -L107
أنا أيضا أتلقى نفس الخطأ
استنفد هذا الخطأ سعة حصتي.
لدينا 289 حدثًا من هذا في آخر 24 ساعة - ولم يتم نشر صفحتنا حتى الآن ..
{
currentTarget: [object Null],
isTrusted: [Circular ~],
target: head > link,
type: error
}
نحن نستخدم next.js
نفس الشيء هنا مع cra 😅
يبدو أن هذه المشكلة ناتجة عن شيء مثل هذا تقريبًا:
new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
script.onload = resolve;
script.onerror = reject;
document.body.appendChild(script);
});
سيتلقى الخطاف onerror
فعليًا كائن Event
، بدلاً من مثيل Error
، والذي يتسبب في حدوث هذه المشكلات المذكورة أعلاه. يمكن تجنب ذلك عن طريق تغليف Event
بـ Error
كما هو مقترح بواسطة https://developer.mozilla.org/de/docs/Web/API/HTMLScriptElement :
new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
script.onload = resolve;
script.onerror = event => {
reject(new Error(`Failed to load ${event.target.src}`));
};
document.body.appendChild(script);
});
في حالتي ، كانت آلية الجلب المسبق لـ Next.js 9.5.2
هي التي تسببت في ظهورها على Firefox ، فقط في حالة وجود شخص ما لديه حالة مماثلة. (ربما هنا؟ https://github.com/getsentry/sentry-javascript/issues/2546#issuecomment-697771381) هذه هي المشكلة: https://github.com/vercel/next.js/pull/16757 ويمكن يمكن حلها بالترقية إلى 9.5.3
أو Canary.
الخطأ مطول أكثر في المتصفح ، على الرغم من:
Uncaught (in promise)
error
bubbles: false
...
...
as: "fetch"
assignedSlot: null
attributes: NamedNodeMap(3
0: href="/_next/data/wmQYPCwvbuBulJfEwTMRf/smartwatches/fitbit-ionic.json"
1: rel="prefetch"
2: as="fetch"
as: as="fetch"
href: href="/_next/data/wmQYPCwvbuBulJfEwTMRf/smartwatches/fitbit-ionic.json"
length: 3
rel: rel="prefetch"
...
...
isTrusted: true
originalTarget: <link href="/_next/data/wmQYPCwvbuBu…tches/fitbit-ionic.json" rel="prefetch" as="fetch">
returnValue: true
srcElement: <link href="/_next/data/wmQYPCwvbuBu…tches/fitbit-ionic.json" rel="prefetch" as="fetch">
target: <link href="/_next/data/wmQYPCwvbuBu…tches/fitbit-ionic.json" rel="prefetch" as="fetch">
timeStmp: 25366
type: "error"
...
كيف يمكننا الحصول على Sentry لالتقاط هذه البيانات؟
@ Turbo87 نعم! هذا هو سبب رؤيتنا له فقط على الصفحات التي تستخدم @googlemaps/js-api-loader
. إنهم يفعلون بالضبط ما تصفه هنا
شكرا لك!!
التعليق الأكثر فائدة
استنفد هذا الخطأ سعة حصتي.