Highcharts: TypeError: لا يمكن قراءة الخاصية "pos" من undefined

تم إنشاؤها على ١٥ فبراير ٢٠١٨  ·  18تعليقات  ·  مصدر: highcharts/highcharts

أنا أستخدم highcharts-ng مع highcharts.js
في كل مرة أقوم بتشغيل الرسم البياني أحصل على هذا الخطأ:

angular.js:13920 TypeError: Cannot read property 'pos' of undefined
    at https://code.highcharts.com/stock/highstock.js:518:422
    at Array.forEach (<anonymous>)
    at a.each (https://code.highcharts.com/stock/highstock.js:27:466)
    at F.<anonymous> (https://code.highcharts.com/stock/highstock.js:518:396)
    at F.a.(anonymous function) [as getPlotLinePath] (https://code.highcharts.com/stock/highstock.js:19:437)
    at a.Tick.renderGridLine (https://code.highcharts.com/stock/highstock.js:113:264)
    at a.Tick.render (https://code.highcharts.com/stock/highstock.js:115:472)
    at F.renderTick (https://code.highcharts.com/stock/highstock.js:159:427)
    at https://code.highcharts.com/stock/highstock.js:160:448
    at Array.forEach (<anonymous>)

أيه أفكار؟

Bug

التعليق الأكثر فائدة

الإصدار التالي (7.0.3) مجدول بنهاية هذا الأسبوع

ال 18 كومينتر

مرحبًا @ Lir10

هل يمكنك الاتصال بدعمنا؟ راجع: https://www.highcharts.com/support

نستخدم مشكلات github لتقارير الأخطاء. في حالتك ، لست متأكدًا مما إذا كان هذا خطأ في Highstock أو مخطط خاطئ أو خطأ في وحدة Highcharts-ng.

أيه أفكار؟

فكرة واحدة فقط: يشير الخطأ إلى مشكلة علامات التجزئة xAxis / yAxis ، لذلك سأحاول إزالة الخيارات المحددة هناك ومعرفة ما إذا كان هذا يحل المشكلة. إذا كانت الإجابة بنعم ، فالرجاء إعادة إنشاء المشكلة في jsfiddle ، بدون highcharts-ng للتأكد من وجود خطأ في Highstock lib.

مرحبًا @ pawelfus ،

لقد كنت محقًا - كانت المشكلة في علامات xAxis

إغلاق القضية

@ Lir10 هل لي أن أسأل ما هي المشكلة؟ لدي نفس المشكلة وأحاول تحديد السبب. شكر!

تضمين التغريدة

أود أن أقترح القيام بذلك:

أيه أفكار؟

فكرة واحدة فقط: يشير الخطأ إلى مشكلة علامات التجزئة xAxis / yAxis ، لذلك سأحاول إزالة الخيارات المحددة هناك ومعرفة ما إذا كان هذا يحل المشكلة. إذا كانت الإجابة بنعم ، فالرجاء إعادة إنشاء المشكلة في jsfiddle ، بدون highcharts-ng للتأكد من وجود خطأ في Highstock lib.

@ Lir10 ، هل يمكنك وصف مكان المشكلة بالضبط ، إذا كنت لا تزال تتذكر؟ أواجه نفس المشكلة ، لكن لا يمكنني ملاحظة الظروف ، إنها تحدث بشكل عشوائي ، وللأسف pawelfus لا تساعد كثيرًا.

مرحبًا davletovalmir

إذا كنت ستتمكن من توفير طريقة مستقرة لإعادة إنشاء المشكلة ، فيرجى مشاركة رابط للعرض التوضيحي أو الملفات المطلوبة.

KacperMadej ، لم أتمكن من العثور على السبب الجذري حتى الآن ، ولكن هذا ما لجزء من الشفرة المبهمة أدناه):

  1. تم طرح الخطأ في الدالة step داخل تلك الكتلة:
d.group.animate({
  scaleY: 1
}, G(z(d.options.animation), {
  step: function(a, b) {
    h[f] = v + b.pos * (c.pos - v); /// <-- b is undefined
    d.group.attr(h)
  }
}))
  1. يتم استدعاء الوظيفة step هنا ، كما تلاحظ ، مع السياق ، ولكن بدون a و b args:
animate: function(e, q, b) {
  q = a.animObject(y(q, this.renderer.globalAnimation, !0));
  y(m.hidden, m.msHidden, m.webkitHidden, !1) && (q.duration = 0);
  0 !== q.duration ? (b && (q.complete = b),
    h(this, e, q)) : (this.attr(e, null, b),
  q.step && q.step.call(this)); /// <-- function called without arguments
  return this
}
  1. هذه الوظيفة animate هي جزء من SVGElement وتم استدعاؤها داخل الوظيفة render .
  2. لقد وجدت طريقة لإعادة إنتاج هذا ، لكنه غريب. يحدث ذلك عند إعادة التحميل المباشر للتطبيق ، عندما يتم عرض الرسم البياني لأول مرة ، وبشكل أساسي عندما لا يكون التركيز على المتصفح.

لم يكن لدي الوقت الكافي لفحص هذه القضية بعمق. آمل أن يكون ما وجدته مفيدًا لك.

ملاحظة: يتم أيضًا إرفاق جزء من لقطة الشاشة مع وجود خطأ في وحدة التحكم. لست متأكدًا مما إذا كان سيساعد كثيرًا ، ولكن من يدري :)
image

تضمين التغريدة
شكرًا على المعلومات - يكفي أن أعيد إنشاء المشكلة.

إليك حل بديل لإصلاح التعليمات البرمجية:
https://jsfiddle.net/BlackLabel/L6x08jeq/1/

يمكنك تطبيق إصلاح الكود من العرض التوضيحي في التعليمات البرمجية الخاصة بك (مثل الوحدة النمطية - بعد ملف Highcharts الرئيسي). إذا كان لديك متسع من الوقت ، فيرجى التحقق مما إذا كان هذا يحل الخطأ في تطبيقك.

لمعلوماتك: غير مصغر ، يتوفر رمز قابل للقراءة البشرية للملفات ذات الصلة بـ Highcharts باستخدام ملفات ذات .src.js - على سبيل المثال highcharts.src.js .

التفاصيل (ويعرف أيضًا باسم القصة الأطول):

عندما يتم عرض المخطط لأول مرة ، وبشكل أساسي عندما لا يكون التركيز على المتصفح

هذا شيء يجب التحقق منه - قد يكون هذا مرتبطًا بميزة حديثة تمنع الرسوم المتحركة لبطاقات / نوافذ المتصفح غير المركزة (لأنه لا داعي للتحريك عندما لا يشاهد أحد).

تمكنت من الحصول على الرمز الصحيح المقابل في رمز غير مصغر. المفتاح هنا هو استخدام نوع سلسلة العمود.

عرض توضيحي: https://jsfiddle.net/BlackLabel/L6x08jeq/
خطوات:

  1. افتح وحدة تحكم المتصفح
  2. يفتح الرسم البياني بدون أخطاء ، اترك وحدة التحكم مفتوحة
  3. اضغط على زر التشغيل وقم بإخفاء علامة التبويب
  4. سيظهر الخطأ في وحدة التحكم بعد عرض المخطط

_مذكرة داخلية:_
H.pick((fx && fx.pos), 1) بدلاً من fx.pos على حل المشكلة ، ولكن الاختبار مطلوب للتأكيد.

KacperMadej ، شكرًا ، هذا منطقي. إصلاح يعمل :)
هل يمكنك من فضلك تقدير موعد إصدار هذا الإصلاح؟

تضمين التغريدة
سيكون الإصلاح في العلاقات العامة هذا الأسبوع ويجب إصداره مع إصدار Highcharts التالي.

في هذه الأثناء:

  • الحل الآن هو إضافة الكود المغلف كما هو موضح في العرض التوضيحي.
  • بعد الالتزام ، سيتم إنشاء Highcharts مع إمكانية الوصول إلى الإصلاح من خلال الرابط المستند إلى GitHub المرتبط بالفرع الذي يحتوي على الإصلاح.
  • بعد قبول العلاقات العامة ، سيتم الوصول إلى Highcharts build مع الإصلاح من الفرع الرئيسي على الرابط المستند إلى GitHub - https://github.highcharts.com/highcharts.src.js

سبب المشكلة هو عدم تمرير الدالة animate الوسيطات المناسبة إلى step عندما تجاوزت الرسوم المتحركة ، لذلك أصلحتها هناك بدلاً من ذلك.

KacperMadej كم من الوقت حتى الإصدار التالي؟ لقد انتقلنا للتو من الرسوم البيانية الزاويّة ونود فقط تثبيت الإصدار مع الإصلاح قبل دمج فرع الميزات لدينا ، بدلاً من البدء برمز إضافي لإصلاح خطأ ، لن يكون موجودًا بعد أيام قليلة.

الإصدار التالي (7.0.3) مجدول بنهاية هذا الأسبوع

هل هناك ETA محدث؟

اختبارات الانحدار جارية. بمجرد حل جميع المشكلات ، سيتم إصدار إصدار جديد - أتوقع إصدارًا جديدًا قريبًا ، بحد أقصى بضعة أيام.

تم إصداره الآن yhoiseth

حلو! شكرا لإخباري 🙂

لسبب ما ، لم يخطرني GitHub ، على الرغم من أنني "أشاهد الإصدارات" لهذا المستودع 🤔

لا أعرف سبب عدم تلقيك للإشعار ، ولكن لا يزال بإمكانك الاشتراك في قائمتنا البريدية: https://www.highcharts.com/blog/download/

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات