Highcharts: TypeError: impossible de lire la propriété 'pos' d'undefined

Créé le 15 févr. 2018  ·  18Commentaires  ·  Source: highcharts/highcharts

J'utilise highcharts-ng avec highcharts.js
Chaque fois que je lance le graphique, j'obtiens cette erreur:

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

Des idées?

Bug

Commentaire le plus utile

La prochaine version (7.0.3) est prévue d'ici la fin de cette semaine

Tous les 18 commentaires

Salut @ Lir10

Pourriez-vous contacter notre support? Voir: https://www.highcharts.com/support

Nous utilisons les problèmes de github pour les rapports de bogues. Dans votre cas, je ne suis pas sûr s'il s'agit d'un bogue dans Highstock, d'un graphique mal configuré ou d'un bogue dans le module highcharts-ng.

Des idées?

Une seule idée: une erreur suggère un problème de tiques xAxis / yAxis, j'essaierais donc de supprimer les options définies ici et de voir si cela résout le problème. Si oui, alors veuillez recréer le problème dans jsfiddle, sans highcharts-ng pour être sûr qu'il s'agit d'un bogue dans la lib Highstock.

Salut @pawelfus ,

Vous aviez raison - le problème était sur les tiques xAxis

Clôture du numéro

@ Lir10 Puis-je demander quel était le problème? J'ai le même problème et j'essaie d'identifier la cause. Merci!

@bobheadxi

Je suggérerais de faire ceci:

Des idées?

Une seule idée: une erreur suggère un problème de tiques xAxis / yAxis, j'essaierais donc de supprimer les options définies ici et de voir si cela résout le problème. Si oui, alors veuillez recréer le problème dans jsfiddle, sans highcharts-ng pour être sûr qu'il s'agit d'un bogue dans la lib Highstock.

@ Lir10 , pourriez-vous s'il vous plaît décrire où était exactement le problème, si vous vous en souvenez encore? Je suis confronté au même problème, mais je ne peux pas saisir les circonstances, cela se produit au hasard, et malheureusement la réponse de @pawelfus n'aide pas beaucoup.

Salut @davletovalmir

Si vous êtes en mesure de fournir un moyen stable de recréer le problème, veuillez partager un lien vers la démo ou les fichiers nécessaires.

@KacperMadej , je n'ai pas encore trouvé la cause principale, mais voici ce que j'ai découvert (je suis désolé à l'avance pour un morceau de code obscurci ci-dessous):

  1. L'erreur est lancée dans la fonction step , à l'intérieur de ce bloc:
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 est appelée ici, comme vous pouvez le remarquer, avec contexte, mais sans a et 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. Cette fonction animate fait partie de SVGElement et a été appelée dans la fonction render .
  2. J'ai trouvé le moyen de reproduire cela, mais c'est bizarre. Cela se produit lors du rechargement en direct de l'application, lorsque le graphique est rendu pour la première fois, et principalement lorsque le focus n'est pas sur le navigateur.

Je n'ai pas eu assez de temps pour examiner cette question en profondeur. J'espère que ce que j'ai trouvé vous sera utile.

PS Joindre également une capture d'écran avec une erreur de console. Je ne sais pas si cela aidera beaucoup, mais qui sait :)
image

@davletovalmir
Merci pour l'info - il me suffit de recréer le problème.

Voici une solution de contournement avec un correctif de code:
https://jsfiddle.net/BlackLabel/L6x08jeq/1/

Vous pouvez appliquer le correctif de code de la démo dans votre code (comme un module - après le fichier Highcharts principal). Si vous avez le temps, veuillez vérifier si cela résout l'erreur dans votre application.

FYI: Le code non minifié, lisible par l'homme pour les fichiers liés Highcharts est disponible en utilisant des fichiers avec .src.js - par exemple highcharts.src.js .

Détails (aka l'histoire plus longue):

lorsque le graphique est rendu pour la première fois, et principalement lorsque le focus n'est pas sur le navigateur

C'est quelque chose à vérifier - cela peut être lié à une fonctionnalité récente qui empêche l'animation pour les cartes / fenêtres de navigateur non focalisées (car il n'est pas nécessaire d'animer lorsque personne ne regarde).

J'ai pu obtenir le code correspondant correct dans un code non minifié. La clé ici est d'utiliser le type de série de colonnes.

Démo: https://jsfiddle.net/BlackLabel/L6x08jeq/
Pas:

  1. Ouvrir la console du navigateur
  2. Le graphique s'ouvre sans erreur, gardez la console ouverte
  3. Appuyez sur le bouton Exécuter et masquez l'onglet
  4. L'erreur s'affichera dans la console après le rendu du graphique

_Note interne: _
H.pick((fx && fx.pos), 1) au lieu de fx.pos semble résoudre le problème, mais des tests sont nécessaires pour confirmer.

@KacperMadej , merci, cela a du sens. Le correctif fonctionne :)
Pourriez-vous s'il vous plaît estimer quand ce correctif sera publié?

@davletovalmir
Le correctif sera en PR cette semaine et devrait être publié avec la prochaine version de Highcharts.

Pendant ce temps:

  • Maintenant, la solution consiste à ajouter le code encapsulé comme indiqué dans la démo.
  • Une fois la validation effectuée, la construction de Highcharts avec le correctif sera accessible via le lien basé sur GitHub lié à la branche avec le correctif.
  • Une fois que PR sera accepté, la construction de Highcharts avec le correctif sera accessible sur la branche principale sur le lien basé sur GitHub - https://github.highcharts.com/highcharts.src.js

Le problème était dû au fait que la fonction animate ne transmettait pas les arguments appropriés à step lorsqu'elle contournait l'animation, je l'ai donc corrigée à la place.

@KacperMadej combien de temps avant la prochaine version? Nous venons de migrer à partir de highcharts angulaires et aimerions simplement installer la version avec le correctif avant de fusionner notre branche de fonctionnalités, au lieu de commencer avec du code supplémentaire pour corriger un bogue, qui ne sera plus là dans quelques jours.

La prochaine version (7.0.3) est prévue d'ici la fin de cette semaine

Existe-t-il un ETA mis à jour?

Des tests de régression sont en cours. Une fois tous les problèmes résolus, une nouvelle version sera publiée - je m'attendrais à une nouvelle version bientôt, quelques jours maximum.

Il est sorti maintenant @yhoiseth

Sucré! Merci de me l'avoir fait savoir 🙂

Pour une raison quelconque, GitHub ne m'a pas averti, même si je "surveille les versions" de ce référentiel

Je ne sais pas pourquoi vous n'avez pas reçu la notification, mais vous pouvez quand même vous inscrire à notre liste de diffusion: https://www.highcharts.com/blog/download/

Cette page vous a été utile?
0 / 5 - 0 notes