Highcharts: TypeError: невозможно прочитать свойство pos of undefined

Созданный на 15 февр. 2018  ·  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>)

Есть идеи?

Самый полезный комментарий

Следующая версия (7.0.3) запланирована на конец этой недели

Все 18 Комментарий

Привет @ Lir10

Не могли бы вы связаться с нашей службой поддержки? См .: https://www.highcharts.com/support

Мы используем вопросы github для отчетов об ошибках. В вашем случае я не уверен, является ли это ошибкой в ​​Highstock, неправильно настроенной диаграммой или ошибкой в ​​модуле highcharts-ng.

Есть идеи?

Только одна идея: ошибка предполагает проблему с тиками xAxis / yAxis, поэтому я бы попытался удалить определенные там параметры и посмотреть, решит ли это проблему. Если да, то воссоздайте проблему в jsfiddle без highcharts-ng, чтобы убедиться, что это ошибка в библиотеке Highstock.

Привет @pawelfus!

Вы были правы - проблема была в тиках xAxis

Закрытие вопроса

@ Lir10 Могу я спросить, в чем проблема? У меня такая же проблема, и я пытаюсь определить причину. Благодаря!

@bobheadxi

Я бы посоветовал сделать это:

Есть идеи?

Только одна идея: ошибка предполагает проблему с тиками xAxis / yAxis, поэтому я бы попытался удалить определенные там параметры и посмотреть, решит ли это проблему. Если да, то воссоздайте проблему в jsfiddle без highcharts-ng, чтобы убедиться, что это ошибка в библиотеке Highstock.

@ 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. Я нашел способ воспроизвести это, но это странно. Это происходит при перезагрузке приложения в реальном времени, когда диаграмма отображается в первый раз, и, в основном, когда фокус не на браузере.

У меня не было достаточно времени, чтобы глубоко изучить этот вопрос. Надеюсь, то, что я нашел, будет для вас полезным.

PS Также прикрепляю кусок скриншота с ошибкой консоли. Не уверен, что это сильно поможет, но кто знает :)
image

@davletovalmir
Спасибо за информацию - мне достаточно воссоздать проблему.

Вот обходной путь с исправлением кода:
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 , спасибо, это имеет смысл. Фикс работает :)
Не могли бы вы прикинуть, когда будет выпущено это исправление?

@davletovalmir
Исправление будет опубликовано на этой неделе и должно быть выпущено в следующей версии Highcharts.

В это время:

  • Теперь решение состоит в том, чтобы добавить обернутый код, как показано в демонстрации.
  • После фиксации сборки Highcharts с исправлением можно будет получить доступ через ссылку на GitHub, связанную с веткой с исправлением.
  • После того, как PR будет принят, сборка Highcharts с исправлением будет доступна в главной ветке по ссылке на GitHub - https://github.highcharts.com/highcharts.src.js

Проблема была вызвана тем, что функция animate не передает соответствующие аргументы step при обходе анимации, поэтому вместо этого я исправил ее.

@KacperMadej, сколько времени до следующего релиза? Мы только что перешли с angular highcharts и хотели бы просто установить версию с исправлением перед объединением нашей функциональной ветки, вместо того, чтобы начинать с дополнительного кода для исправления ошибки, которой больше не будет через несколько дней.

Следующая версия (7.0.3) запланирована на конец этой недели

Есть ли обновленное расчетное время прибытия?

Выполняются регрессионные тесты. Как только все проблемы будут решены, будет выпущена новая версия - я бы ожидал новую версию в ближайшее время, максимум через несколько дней.

Он выпущен сейчас @yhoiseth

Сладкий! Спасибо, что сообщили мне 🙂

По какой-то причине GitHub меня не уведомил, хотя я «смотрю релизы» для этого репозитория 🤔

Я не знаю, почему вы не получили уведомление, но вы все же можете подписаться на наш список рассылки: https://www.highcharts.com/blog/download/

Была ли эта страница полезной?
0 / 5 - 0 рейтинги