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>)

何か案は?

Bug

最も参考になるコメント

次のバージョン(7.0.3)は今週の終わりまでに予定されています

全てのコメント18件

こんにちは@ Lir10

サポートにご連絡いただけますか? 参照: https

バグレポートにはgithubの問題を使用しています。 あなたの場合、これがHighstockのバグなのか、チャートの設定ミスなのか、highcharts-ngモジュールのバグなのかわかりません。

何か案は?

唯一のアイデア:エラーはxAxis / yAxisティックの問題を示唆しているので、そこで定義されているオプションを削除して、これで問題が解決するかどうかを確認します。 はいの場合は、highcharts-ngを使用せずにjsfiddleで問題を再作成して、Highstocklibのバグであることを確認してください。

こんにちは@pawelfus

あなたは正しかった-問題はxAxisティックにあった

問題を解決する

@ Lir10何が問題だったのか聞いてもいいですか? 私は同じ問題を抱えており、原因を特定しようとしています。 ありがとう!

@bobheadxi

私はこれを行うことをお勧めします:

何か案は?

唯一のアイデア:エラーはxAxis / yAxisティックの問題を示唆しているので、そこで定義されているオプションを削除して、これで問題が解決するかどうかを確認します。 はいの場合は、highcharts-ngを使用せずにjsfiddleで問題を再作成して、Highstocklibのバグであることを確認してください。

@ 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引数は使用されません。
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バージョンでリリースされる予定です。

その間:

  • 解決策は、デモに示されているように、ラップされたコードを追加することです。
  • コミットが行われた後、修正を使用してHighchartsをビルドすると、修正を含むブランチに関連するGitHubベースのリンクからアクセスできるようになります。
  • PRが承認された後、修正を加えたHighchartsビルドは、GitHubベースのリンクのマスターブランチからアクセスできるようになります-https ://github.highcharts.com/highcharts.src.js

この問題は、 animate関数がアニメーションをバイパスしたときに適切な引数をstepに渡さなかったことが原因であったため、代わりにそこで修正しました。

@KacperMadej次のリリースまでどのくらい

次のバージョン(7.0.3)は今週の終わりまでに予定されています

更新されたETAはありますか?

回帰テストが進行中です。 すべての問題が解決されると、新しいバージョンがリリースされます。新しいリリースは間もなく、最大で数日かかると思います。

今リリースされました@yhoiseth

甘い! 教えてくれてありがとう🙂

このリポジトリの「リリースを監視」しているのに、何らかの理由でGitHubから通知がありませんでした🤔

通知を受け取らなかった理由はわかりませんが、それでも、メーリングリストにサインアップできます: https

このページは役に立ちましたか?
0 / 5 - 0 評価