Ng-lazyload-image: TypeError: Não é possível ler a propriedade 'toLowerCase' de undefined ao carregar a página do meio em relação ao topo

Criado em 18 jul. 2017  ·  11Comentários  ·  Fonte: tjoskar/ng-lazyload-image

Olá,

Eu descobri um bug em que, se você carregar uma página rolada até a metade (vs no topo), o Node dá um erro de "TypeError: não é possível ler a propriedade 'toLowerCase' de indefinido". Isso não parece interromper o plug-in, pois ele continua com o carregamento lento, no entanto, o novo evento de saída onLoad parece não disparar corretamente até que você role de volta para o topo novamente.

Como recriar: carregue sua página de teste normalmente, na parte superior. Role para baixo até que você esteja na metade do caminho. Agora atualize a página e comece a rolar a partir do meio. Você deve ver um erro de nó. Caso contrário, certifique-se de utilizar o evento de saída onLoad. Se você rolar até o topo, verá o evento onLoad começar a funcionar repentinamente.

Comentários muito úteis

Todos 11 comentários

Oi,

Não consigo reproduzir isto: /
Quando você diz "Carregue sua página de teste normalmente". Você quer dizer esta página: https://tjoskar.github.io/ng-lazyload-image ou você executa a página localmente com npm start ?

Qual navegador você está usando?

Por algum motivo, no github.io, não consigo atualizar a página depois de carregá-la uma vez. Diz 404 não encontrado sempre :(

Mas, em geral, quero dizer localmente com qualquer projeto - estou usando Angular 4 com Universal e Node (então universal pode ter algo a ver com isso). Usando o Chrome 59 para Windows 10. Acho que isso pode ser um bug com a nova funcionalidade onLoad, mas não é positivo. O erro só aparece no console do Node, não parece que nenhum erro apareça no console do Chrome.

Olá @elitenick ,
Você pode fornecer um rastreamento de pilha completo de erro?

@tjoskar
Acho que esse erro está relacionado com https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L75 , antes aqui pegarei o erro, mas já não está.
No Angular Universal aqui https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L47 produzindo erro, porque element no servidor não está definido.
Eu acho que uma boa solução para o problema é desabilitar o img preguiçoso no lado do servidor.

Por algum motivo, no github.io, não consigo atualizar a página depois de carregá-la uma vez. Diz 404 não encontrado sempre :(

Sim, isso é porque o github não oferece suporte para redirecionar todas as solicitações para index.html (mas esse é um problema completamente diferente)

Provavelmente tem algo a ver com o Angular Universal, mas há algumas coisas que não entendo:

  1. Por que você só obtém o erro ao atualizar a página? O Node não deve obter nenhuma informação sobre a posição de rolagem ou se é sua primeira ou segunda visita (o backend não deve ter nenhum estado desse tipo).
  2. Digamos que é essa linha que causa o problema. Nesse caso, element não pode ser indefinido porque estamos acessando nodeName de element sem erros e, além disso, estamos usando element em isVisible () e estamos até usando window nessa função, que deve ser indefinida em um contexto de servidor.

Acho que isso pode ser um bug com a nova funcionalidade onLoad, mas não é positivo

Você está usando (onLoad) ? Você pode tentar removê-lo e ver se consegue reproduzir o erro?

@rimlin

Eu acho que uma boa solução para o problema é desabilitar o img preguiçoso no lado do servidor.

Sim, não faz sentido carregar imagens lentamente no servidor (já que não sabemos nada sobre o tamanho da tela).
Talvez possamos apenas adicionar if (isPlatformServer(this.platformId)) return; ( ref ) em ngAfterContentInit .

@elitenick , acabei de publicar [email protected] com @rimlin pull request. Você pode instalá-lo ( npm install [email protected] ) e ver se ele resolve o problema?

Com certeza! Vou verificar hoje e avisar! Obrigado rapazes.

Está consertado! Muito obrigado !! Recriei meu mesmo cenário várias vezes e sem mais erros do Node. E o carregamento lento continua a funcionar assim que o Angular entrar em ação.

Incluído em [email protected] .

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

Questões relacionadas

vugar005 picture vugar005  ·  10Comentários

stratio84 picture stratio84  ·  6Comentários

kodeine picture kodeine  ·  7Comentários

sandeepdussa picture sandeepdussa  ·  9Comentários

alisahinozcelik picture alisahinozcelik  ·  4Comentários