Highcharts: TypeError: Die Eigenschaft 'pos' von undefined kann nicht gelesen werden

Erstellt am 15. Feb. 2018  ·  18Kommentare  ·  Quelle: highcharts/highcharts

Ich benutze highcharts-ng mit highcharts.js
Jedes Mal, wenn ich das Diagramm starte, wird folgende Fehlermeldung angezeigt:

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

Irgendwelche Ideen?

Bug

Hilfreichster Kommentar

Die nächste Version (7.0.3) ist für Ende dieser Woche geplant

Alle 18 Kommentare

Hi @ Lir10

Könnten Sie sich an unseren Support wenden? Siehe: https://www.highcharts.com/support

Wir verwenden Github-Probleme für Fehlerberichte. In Ihrem Fall bin ich mir nicht sicher, ob dies ein Fehler in Highstock, ein falsch konfiguriertes Diagramm oder ein Fehler im Highcharts-ng-Modul ist.

Irgendwelche Ideen?

Nur eine Idee: Der Fehler deutet auf ein Problem mit xAxis / yAxis-Häkchen hin. Daher würde ich versuchen, die dort definierten Optionen zu entfernen und zu prüfen, ob das Problem dadurch behoben wird. Wenn ja, erstellen Sie das Problem bitte in jsfiddle ohne highcharts-ng neu, um sicherzugehen, dass es sich um einen Fehler in der Highstock-Bibliothek handelt.

Hallo @pawelfus ,

Sie hatten Recht - das Problem lag bei den xAxis-Ticks

Das Problem schließen

@ Lir10 Darf ich fragen, was das Problem war? Ich habe das gleiche Problem und versuche, die Ursache zu lokalisieren. Vielen Dank!

@ Bobheadxi

Ich würde vorschlagen, dies zu tun:

Irgendwelche Ideen?

Nur eine Idee: Der Fehler deutet auf ein Problem mit xAxis / yAxis-Häkchen hin. Daher würde ich versuchen, die dort definierten Optionen zu entfernen und zu prüfen, ob das Problem dadurch behoben wird. Wenn ja, erstellen Sie das Problem bitte in jsfiddle ohne highcharts-ng neu, um sicherzugehen, dass es sich um einen Fehler in der Highstock-Bibliothek handelt.

@ Lir10 , kannst du bitte beschreiben, wo genau das Problem war, wenn du dich noch erinnerst? Ich stehe vor dem gleichen Problem, aber ich kann die Umstände nicht erfassen , es passiert nur zufällig, und leider @pawelfus nicht viel.

Hallo @davletovalmir

Wenn Sie eine stabile Möglichkeit zum erneuten Erstellen des Problems bereitstellen können, teilen Sie bitte einen Link für die Demo oder die benötigten Dateien mit.

@KacperMadej , ich konnte die Grundursache noch nicht finden, aber hier ist, was ich herausgefunden habe (es tut mir im Voraus leid für einen Teil des verschleierten Codes unten):

  1. Der Fehler wird in der Funktion step in diesem Block ausgelöst:
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 wird hier, wie Sie sehen können, mit Kontext aufgerufen, jedoch ohne a und b Argumente:
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. Diese animate -Funktion ist Teil von SVGElement und wurde innerhalb der render -Funktion aufgerufen.
  2. Ich habe den Weg gefunden, dies zu reproduzieren, aber es ist komisch. Dies geschieht beim Live-Reload der App, wenn das Diagramm zum ersten Mal gerendert wird und hauptsächlich, wenn der Fokus nicht auf dem Browser liegt.

Ich hatte nicht genug Zeit, um dieses Problem eingehend zu untersuchen. Hoffe, was ich gefunden habe, wird für Sie hilfreich sein.

PS Hängt auch einen Screenshot mit Konsolenfehler an. Ich bin mir nicht sicher, ob es viel helfen wird, aber wer weiß :)
image

@davletovalmir
Vielen Dank für die Info - es reicht mir, um das Problem neu zu erstellen.

Hier ist eine Problemumgehung mit Codefix:
https://jsfiddle.net/BlackLabel/L6x08jeq/1/

Sie können den Code-Fix aus der Demo auf Ihren Code anwenden (wie ein Modul - nach der Haupt-Highcharts-Datei). Wenn Sie Zeit haben, überprüfen Sie bitte, ob dies den Fehler in Ihrer App behebt.

Zu Ihrer Information: Nicht minimierter, von Menschen lesbarer Code für Highcharts-bezogene Dateien ist verfügbar, wenn Dateien mit .src.js - z. B. highcharts.src.js .

Details (auch bekannt als die längere Geschichte):

wenn das Diagramm zum ersten Mal gerendert wird und hauptsächlich, wenn der Fokus nicht auf dem Browser liegt

Dies sollte überprüft werden. Dies hängt möglicherweise mit einer kürzlich durchgeführten Funktion zusammen, die Animationen für nicht fokussierte Browserkarten / -fenster verhindert (da keine Animation erforderlich ist, wenn niemand zuschaut).

Ich konnte den richtigen entsprechenden Code in nicht minimiertem Code erhalten. Der Schlüssel hier ist die Verwendung des Spaltenreihentyps.

Demo: https://jsfiddle.net/BlackLabel/L6x08jeq/
Schritte:

  1. Öffnen Sie die Browserkonsole
  2. Das Diagramm wird ohne Fehler geöffnet. Lassen Sie die Konsole geöffnet
  3. Klicken Sie auf die Schaltfläche Ausführen und blenden Sie die Registerkarte aus
  4. Der Fehler wird in der Konsole angezeigt, nachdem das Diagramm gerendert wurde

Interne Anmerkung:
H.pick((fx && fx.pos), 1) anstelle von fx.pos scheint das Problem zu lösen, aber zur Bestätigung sind Tests erforderlich.

@KacperMadej , danke, das macht Sinn. Fix funktioniert :)
Könnten Sie bitte abschätzen, wann dieses Update veröffentlicht wird?

@davletovalmir
Das Update wird diese Woche in der PR veröffentlicht und sollte mit der nächsten Highcharts-Version veröffentlicht werden.

Inzwischen:

  • Jetzt besteht die Lösung darin, den umschlossenen Code wie in der Demo gezeigt hinzuzufügen.
  • Nach dem Festschreiben von Highcharts kann der Fix über einen GitHub-basierten Link aufgerufen werden, der sich auf den Zweig mit dem Fix bezieht.
  • Nachdem die PR akzeptiert wurde, kann auf Highcharts-Builds mit dem Fix im Hauptzweig über einen GitHub-basierten Link zugegriffen werden - https://github.highcharts.com/highcharts.src.js

Das Problem wurde dadurch verursacht, dass die Funktion animate keine entsprechenden Argumente an step als die Animation umgangen wurde. Deshalb habe ich sie stattdessen dort behoben.

@KacperMadej wie lange bis zur nächsten Veröffentlichung? Wir sind gerade von eckigen Highcharts migriert und würden gerne die Version mit dem Fix installieren, bevor wir unseren Feature-Zweig zusammenführen, anstatt mit zusätzlichem Code zu beginnen, um einen Fehler zu beheben, der in ein paar Tagen nicht mehr vorhanden sein wird.

Die nächste Version (7.0.3) ist für Ende dieser Woche geplant

Gibt es eine aktualisierte ETA?

Regressionstests sind im Gange. Sobald alle Probleme behoben sind, wird eine neue Version veröffentlicht - ich würde bald eine neue Version erwarten, maximal einige Tage.

Es ist jetzt @yhoiseth veröffentlicht

Süss! Danke, dass du mich informiert hast 🙂

Aus irgendeinem Grund hat GitHub mich nicht benachrichtigt, obwohl ich "Releases" für dieses Repository "anschaue"

Ich weiß nicht, warum Sie die Benachrichtigung nicht erhalten haben, aber Sie können sich trotzdem in unsere Mailingliste eintragen: https://www.highcharts.com/blog/download/

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen