Highcharts: TypeError: Não é possível ler a propriedade 'pos' de indefinido

Criado em 15 fev. 2018  ·  18Comentários  ·  Fonte: highcharts/highcharts

Estou usando highcharts-ng com highcharts.js
Sempre que eu inicio o gráfico, recebo este erro:

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

Alguma ideia?

Bug

Comentários muito úteis

A próxima versão (7.0.3) está prevista para o final desta semana

Todos 18 comentários

Olá @ Lir10

Você poderia entrar em contato com nosso suporte? Veja: https://www.highcharts.com/support

Usamos problemas do github para relatórios de bug. No seu caso, não tenho certeza se isso é um bug no Highstock, gráfico mal configurado ou um bug no módulo highcharts-ng.

Alguma ideia?

Apenas uma ideia: o erro sugere um problema de tique xAxis / yAxis, então eu tentaria remover as opções definidas lá e ver se isso resolve o problema. Se sim, então recrie o problema no jsfiddle, sem highcharts-ng para ter certeza de que é um bug no Highstock lib.

Olá @pawelfus ,

Você estava certo - o problema estava nos carrapatos xAxis

Fechando o problema

@ Lir10 Posso perguntar qual era o problema? Eu tenho o mesmo problema e estou tentando localizar a causa. Obrigado!

@bobheadxi

Eu sugeriria fazer isso:

Alguma ideia?

Apenas uma ideia: o erro sugere um problema de tique xAxis / yAxis, então eu tentaria remover as opções definidas lá e ver se isso resolve o problema. Se sim, então recrie o problema no jsfiddle, sem highcharts-ng para ter certeza de que é um bug no Highstock lib.

@ Lir10 , poderia descrever onde estava exatamente o problema, se ainda se lembra? Estou enfrentando o mesmo problema, mas não consigo entender as circunstâncias, simplesmente acontece aleatoriamente e, infelizmente, a resposta de @pawelfus não ajuda muito.

Olá @davletovalmir

Se você for capaz de fornecer uma maneira estável de recriar o problema, compartilhe um link para a demonstração ou os arquivos necessários.

@KacperMadej , ainda não consegui encontrar a causa raiz, mas aqui está o que descobri (lamento antecipadamente por alguns trechos de código ofuscado abaixo):

  1. O erro é lançado na função step , dentro desse bloco:
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 é chamada aqui, como você pode notar, com contexto, mas sem a e 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. Essa função animate faz parte de SVGElement e foi chamada dentro da função render .
  2. Eu encontrei uma maneira de reproduzir isso, mas é estranho. Acontece no recarregamento ao vivo do aplicativo, quando o gráfico é renderizado pela primeira vez e principalmente quando o foco não está no navegador.

Não tive tempo suficiente para inspecionar esse problema em profundidade. Espero que o que encontrei seja útil para você.

PS Também anexando parte da captura de tela com erro do console. Não tenho certeza se vai ajudar muito, mas quem sabe :)
image

@davletovalmir
Obrigado pela informação - é o suficiente para mim recriar o problema.

Aqui está uma solução alternativa com correção de código:
https://jsfiddle.net/BlackLabel/L6x08jeq/1/

Você pode aplicar a correção do código da demonstração em seu código (como um módulo - após o arquivo Highcharts principal). Se você tiver tempo, verifique se isso resolve o erro em seu aplicativo.

Para sua informação: código legível não reduzido para arquivos relacionados a Highcharts está disponível usando arquivos com .src.js - por exemplo, highcharts.src.js .

Detalhes (também conhecido como a história mais longa):

quando o gráfico é renderizado pela primeira vez, e principalmente quando o foco não está no navegador

Isso é algo a verificar - pode estar conectado a um recurso recente que impede a animação de janelas / cartões do navegador desfocados (porque não há necessidade de animar quando ninguém está assistindo).

Consegui obter o código correspondente correto em código não reduzido. A chave aqui é usar o tipo de série da coluna.

Demonstração: https://jsfiddle.net/BlackLabel/L6x08jeq/
Passos:

  1. Abra o console do navegador
  2. O gráfico abre sem erros, mantenha o console aberto
  3. Aperte o botão de execução e esconda a guia
  4. O erro será mostrado no console após o gráfico ser renderizado

_Nota interna: _
H.pick((fx && fx.pos), 1) vez de fx.pos parece estar resolvendo o problema, mas é necessário testar para confirmar.

@KacperMadej , obrigado, isso faz sentido. A correção funciona :)
Você poderia estimar quando essa correção será lançada?

@davletovalmir
A correção estará no PR esta semana e deve ser lançada com a próxima versão do Highcharts.

Enquanto isso:

  • Agora, a solução é adicionar o código empacotado como visto na demonstração.
  • Após a confirmação, os Highcharts construídos com a correção estarão acessíveis através do link baseado no GitHub relacionado ao branch com a correção.
  • Depois que o PR for aceito, os Highcharts compilados com a correção estarão acessíveis no branch master no link baseado no GitHub - https://github.highcharts.com/highcharts.src.js

O problema era causado pela função animate não passando os argumentos apropriados para step ao ignorar a animação, então, em vez disso, corrigi-lo.

@KacperMadej quanto tempo até o próximo lançamento? Acabamos de migrar dos highcharts angulares e adoraríamos instalar a versão com a correção antes de mesclar nosso branch de recursos, em vez de começar com código adicional para corrigir um bug, que não estará mais lá em alguns dias.

A próxima versão (7.0.3) está prevista para o final desta semana

Existe um ETA atualizado?

Testes de regressão estão em andamento. Assim que todos os problemas forem resolvidos, uma nova versão será lançada - espero um novo lançamento em breve, alguns dias no máximo.

É lançado agora @yhoiseth

Doce! Obrigado por me avisar 🙂

Por algum motivo, o GitHub não me notificou, embora eu esteja "observando os lançamentos" deste repositório 🤔

Não sei por que você não recebeu a notificação, mas ainda assim, você pode se inscrever em nossa lista de e-mails: https://www.highcharts.com/blog/download/

Esta página foi útil?
0 / 5 - 0 avaliações