Highcharts: TypeError:无法读取未定义的属性“ pos”

创建于 2018-02-15  ·  18评论  ·  资料来源: highcharts/highcharts

我在highcharts.js中使用highcharts-ng
每当我启动图形时,都会出现此错误:

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 :

我们将github问题用于错误报告。 就您而言,我不确定这是Highstock中的错误,图表配置错误还是highcharts-ng模块中的错误。

有任何想法吗?

只有一个主意:错误提示xAxis / yAxis会出现问题,因此我将尝试删除在那里定义的选项,看看是否可以解决问题。 如果是,那么请在jsfiddle中重新创建问题,而无需highcharts-ng,以确保这是Highstock lib中的错误。

@pawelfus

您说对了-问题出在xAxis刻度上

解决问题

请问@ Lir10是什么问题? 我有同样的问题,正在尝试查明原因。 谢谢!

@bobheadxi

我建议这样做:

有任何想法吗?

只有一个主意:错误提示xAxis / yAxis会出现问题,因此我将尝试删除在那里定义的选项,看看是否可以解决问题。 如果是,那么请在jsfiddle中重新创建问题,而无需highcharts-ng,以确保这是Highstock lib中的错误。

@ Lir10 ,如果您还记得的话,能否请您描述问题出在哪里? 我面临着同样的问题,但是我无法把握情况,它只是随机发生,不幸的是,

@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函数,但具有上下文,但没有ab 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 :
脚步:

  1. 打开浏览器控制台
  2. 图表打开没有错误,请保持控制台打开
  3. 点击运行按钮并隐藏标签
  4. 呈现图表后,错误将显示在控制台中

_内部说明:_
H.pick((fx && fx.pos), 1)而不是fx.pos似乎可以解决问题,但需要进行测试才能确认。

@KacperMadej ,谢谢,这很有道理。 修复工程:)
您能否估计何时发布此修复程序?

@davletovalmir
该修复程序将于本周在PR中发布,并应与下一个Highcharts版本一起发布。

同时:

  • 现在的解决方案是添加演示代码中所示的包装代码。
  • 完成提交后,将通过与该分支的分支相关的基于GitHub的链接来访问带有该修复程序的Highcharts构建。
  • 接受PR后,可以在基于GitHub的链接的master分支上访问带有该修补程序的Highcharts构建-https: //github.highcharts.com/highcharts.src.js

此问题是由于animate函数绕过动画时未将适当的参数传递给step ,因此我改在那儿进行了修复。

@KacperMadej到下一次发布

下个版本(7.0.3)计划于本周末结束

是否有更新的预计到达时间?

回归测试正在进行中。 解决所有问题后,将发布新版本-我希望很快会发布新版本,最多几天。

现在发布了@yhoiseth

甜! 谢谢你让我知道🙂

出于某种原因,即使我正在“监视发布”此存储库,GitHub也没有通知我🤔

我不知道为什么您没有收到通知,但是仍然可以注册我们的邮件列表: https :

此页面是否有帮助?
0 / 5 - 0 等级