Erro de tipo não detectado:Não é possível ler a propriedade 'comprimento' de indefinido
-
27-09-2019 - |
Pergunta
Eu tenho um plugin que acessa o length
propriedade em muitos elementos.No entanto, o console javascript aponta para a linha 12 do jquery.min.js.
Como posso rastrear para encontrar a linha incorreta em meu plugin?
Solução
Como posso voltar atrás para encontrar a linha ofensiva no meu plug -in?
Firebug é uma ótima maneira de depurar esses erros.
(fonte: getfirebug.com)
Outras dicas
Se você usar scripts minificados, qualquer depurador (como totalmente o melhor Firebug) mostrará a mesma linha problemática e essas informações são inúteis (os scripts minificados são difíceis de ler e entender e eles são escritos em 1 linha).
Poucas maneiras de resolver problemas como este:
- Como me disse: Para o desenvolvimento de scripts não minificados, o Debugger mostrará a linha que significa algo e, se você tiver sorte, pode encontrar comentários muito úteis dos desenvolvedores.
- Se você não consegue encontrar a versão completa do script, use o UNMINIFIER como este: http://jsbeautifier.org/ (Cole o script minificado e clique no botão abaixo). Adicione ao seu projeto um script Uminificado e execute a função inválida novamente. O depurador novamente mostrará a linha, mas desta vez você verá uma linha lógica real e poderá entender qual é o problema na maioria dos casos.
- O depurador mostrará qual script lança problemas. Verifique se existem novas versões deste script. Eu tive o mesmo problema uma vez, encontrei linha do script minificado, nome do plug -in (poucas linhas acima nos direitos autorais) e depois descobri que há uma nova versão disponível. Revisou Changelog e havia: "Adicionado várias 'verificações de sanidade' em todo o código para possíveis valores de atributo desconhecido" - Cabeça na cabeça :) Script atualizado e tudo estava bem a partir de agora sem a depuração especial levando horas.
- Google seu erro com o nome do script - ele me ajudou tantas vezes ... provavelmente você fez isso, mas talvez você não tenha tentado com marcas de fala "" - o Google retornará as páginas com a frase exata no texto.
Se você usa o Chrome, pode usar as ferramentas de desenvolvedor integradas (que eu prefiro ao Firebug) acessando "View > Developer > Developer Tools"
.O erro no console geralmente terá uma pequena seta apontando para a direita antes dele, que quando clicada mostrará mais detalhes sobre o erro.
Os erros de Javascript provavelmente não se originam em uma biblioteca, mas sim no código que faz referência aos métodos/funções dentro dessa biblioteca e, portanto, você deseja examinar todas as linhas de problemas listadas no lado direito do console e selecionar a linha que corresponde a o código que você escreveu que será onde está o seu problema.
É improvável que você descubra onde está o seu problema examinando o código-fonte do jQuery.O problema está no seu código.Acontece que o jQuery não pode usar variáveis indefinidas que você passa para ele.
Costumo achar que esses erros de estrutura ambíguos são o resultado de um erro de solicitação de Ajax. Se for esse o caso, sua ferramenta de desenvolvedor de escolha provavelmente contém uma guia de rede e isso pode destacar a fonte real do erro.
Se você estiver usando o jQuery (ou qualquer estrutura JavaScript) para processar os resultados das solicitações do AJAX, os erros de formatação e manuseio são etapas adicionais e muitas vezes negligenciadas.
Além do depurador/Firebug, uma maneira simples de rastrear isso (se você tiver uma versão de sandbox do site) é comentar cada plug -in individualmente e verificar se o erro desaparece.