Vue: Melhorar as informações da mensagem de aviso

Criado em 2 out. 2016  ·  40Comentários  ·  Fonte: vuejs/vue

Diz "Vue Warn: Handler for event click is undefined"
Ocorreu um erro em algum lugar relacionado ao clique do evento, tenho centenas de componentes com eventos de clique. Em qual componente / arquivo irei obter o erro?

erroe

improvement

Comentários muito úteis

Estou usando o Vue 2. Não é um bug. É uma mensagem de erro inútil. Bem, o Vue pode tomar isso como uma sugestão para melhorar o estilo da mensagem de erro e torná-lo específico. Para que, por qualquer engano, se algum desenvolvedor errar, ele poderá consertá-lo em pouco tempo, sabendo exatamente onde está o erro. Em comparação com React JS, eles mostram o nome do componente junto com o número da linha e, claro, o erro também.

Tudo que eu desejo, há mensagem de erro para ser mais específico.

Todos 40 comentários

Este problema arquivado requer mais informações. Você está usando o vue 2 ou vue 1.
É um bug ou uma sugestão? se bug, então um link reproduzível em jsfiddle.
Se algum de seus componentes não tiver uma função de manipulador, isso não pode ser um grande problema.

//Melhor

Estou usando o Vue 2. Não é um bug. É uma mensagem de erro inútil. Bem, o Vue pode tomar isso como uma sugestão para melhorar o estilo da mensagem de erro e torná-lo específico. Para que, por qualquer engano, se algum desenvolvedor errar, ele poderá consertá-lo em pouco tempo, sabendo exatamente onde está o erro. Em comparação com React JS, eles mostram o nome do componente junto com o número da linha e, claro, o erro também.

Tudo que eu desejo, há mensagem de erro para ser mais específico.

Existem muitas mensagens no Vue que realmente não dizem muito. As verificações de segurança de Vue parecem faltar, infelizmente.

Eu acho que se vue pode adicionar um pouco mais de informação aos seus avisos -

Nome do componente
tipo de componente
ou
pode tornar a mensagem de aviso configurável para env de desenvolvimento.

Tentamos fornecer informações sobre os componentes sempre que podemos, este pode ser um descuido.

@ just-nobody forneça exemplos específicos de quais mensagens estão faltando para que possamos melhorar - apenas reclamar não leva a nada.

Eu não estava reclamando de verdade; Achei que era apenas algo que as pessoas já sabiam. Já passei por vários casos pequenos e extremos no passado que geravam uma mensagem estranha e indefinida do problema real, mas, em vez disso, estavam profundamente enraizados na fonte e alguns outros problemas não emitiam um erro e, em vez disso, causavam uma renderização estranha erro. Alguns eram mais fáceis de rastrear do que outros, então não me incomodei em relatá-los, pois percebi que era apenas eu sendo estúpido, mas um em particular eu realmente criei uma solicitação de pull porque demorei muito para descobrir o que estava errado .

Eu imagino que muitos deles estão consertados agora que 2.0.1 foi lançado, mas meu mal em ficar em silêncio, eu acho. Uma mensagem aos leitores: se você acha que é um bug, relate, mesmo que possa acabar não sendo um bug.

@ yyx990803 Ainda, fornecer a chave do nome de um componente não ajuda muito. Obrigado por parar e adicionar este problema como uma melhoria.

:) obrigado Evan

Olá, notei recentemente que a falta de números de linha torna as coisas realmente difíceis de depurar, especialmente se o componente for grande. Eu tenho um componente com alguns milhares de linhas. Recebi um aviso
"[Vue warn]: Erro na função de renderização:" TypeError: _vm.values ​​[item.name] is undefined ""

Há um nome de componente, mas nenhum número de linha em meu console do Firefox. Para este tipo de casos, seria muito útil ter um número de linha especificado. Claro que posso dividir o componente em vários componentes menores ou apenas vasculhar todas essas linhas com a pesquisa do editor, mas esse não é o ponto.

Considere adicionar números de linha nas próximas versões. Obrigada.

+1 Adicione os números das linhas.

Eu recebi a próxima mensagem,

vue.js: 577 [Vue warn]: Erro na renderização: "TypeError: Não é possível ler a propriedade 'comprimento' de indefinido"
(encontrado em)

Eu sei por que falha, nesta construção "variable.length" if variable == null. O problema é que tenho muitas construções ".length", os dados vêm de um serviço externo.

O mesmo para mim @ ameoba32
Eu tenho "Não é possível ler a propriedade 'comprimento' de indefinido" e não encontro onde está o problema. É um grande webapp, então é difícil.
Suponho que encontrei o arquivo na causa, mas não sei onde está exatamente o erro.
Devo raspar linha por linha para encontrar a linha quebrada? xD

O mesmo aqui, como @ ameoba32 . @ yyx990803 Por favor, faça algo. Obrigado!

Eu amo o vue - muito e trabalho com ele há dois anos. A falta de especificidade em um erro RENDER é minha reclamação / solicitação nº 1 para corrigir. Este erro ocorre no modelo ou no código js correspondente. Um número de linha ajudaria muito, ou mesmo se o problema estiver localizado no modelo ou no código js.

teve o mesmo problema

sim. Eu tenho o mesmo problema ;)

unreachable code after return statement[Więcej informacji] app.js:5248:4
unreachable code after return statement[Więcej informacji] app.js line 4957 > eval:5248:4
unreachable code after return statement[Więcej informacji] app.js:5248:4
unreachable code after return statement[Więcej informacji] app.js line 5136 > eval:5248:4

Eu entendo o que isso significa, mas não sei onde devo consertar e examinar todos os meus componentes para encontrar esses problemas dá muito trabalho.

screen shot 2018-08-23 at 16 48 17

Mesmo aqui.

vue.common.js não significa nada para mim quando tento descobrir onde ocorreu o erro.

Eu concordo, que apenas o número da linha no arquivo de origem irá acelerar muito a depuração

alguma coisa nova sobre isso? por que o problema foi encerrado (já que o problema ainda está lá)?

adoraria que isso fosse corrigido! a depuração é muito complicada agora, precisamos do nome do arquivo e do número da linha para facilitar a depuração, corrija

Eu também concordo, meus arquivos .vue são tão grandes e obter a localização exata ajudaria.

Fiz alguns progressos na determinação de qual componente e posso obter o número da linha (em muitos casos) para o erro. (Estou usando componentes de arquivo único). Mas ainda há muita investigação a fazer. Espero divulgar minhas descobertas no futuro.

@ gpadilla123 Senhor, velocidade de Deus. Ansioso pelo seu trabalho.

Caso alguma pessoa ainda esteja penteando seu código em busca de declarações de retorno malformadas, descobri a origem do erro que ocorre quando uso uma expressão e uma chamada de função no modelo:
:class="x=0; getClass()" neste caso, a remoção de x=0; eliminou o aviso. Não que esse seja o caso de qualquer pessoa nesta lista, necessariamente, mas um lembrete para verificar o modelo.

Até hoje ainda não está claro como bolas. Estou recebendo um erro quando vue está avaliando algo que nem estou mudando ...

O Vue 3.0 deve resolver esse problema, pois terá mensagens de erro melhores, mas a data de lançamento do Vue 3.0 vai do final do segundo trimestre de 2019 ao final de 2019. Muito tempo para eu esperar, então eu hackeei uma maneira de obter a linha números dos erros (para alguns casos). A solução hackeada precisa ser mais robusta e funcionar para mais casos.

sim, isso está me matando, eu esperava pelo menos o número da linha ou algo para especificar melhor

+1

Isso é mortal. Precisamos que as linhas em que os erros estão ocorrendo sejam relatadas corretamente. No momento, pareço obter números de linha vue.js completamente inúteis quando ocorre um erro, por exemplo.

[Vue warn]: Erro na renderização: "TypeError: Não é possível ler a propriedade '0' de indefinido"

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
Vai ser divertido procurar a linha. Especialmente quando há uma abundância de .length em meu código.

Mensagens como essas são como uma caça ao ganso selvagem. Nenhuma pista de onde o erro se originou: eu esperaria um número de linha, o nome de um vue, o nome de uma função que fiz e que não faz parte da estrutura do Vue. Isso acontece na vue 2.5.17. Também não há ajuda da extensão de desenvolvimento vue em casos como esses.

image

Fico feliz em saber que isso será tratado no Vue 3.0. Nesse ínterim, encontrei uma boa dica: Clique no indicador de linha de erro no console e coloque um ponto de interrupção na mesma linha na fonte do Vue. Em seguida, você pode recarregar a página, o depurador irá parar no ponto de interrupção, então você pode trabalhar de volta na pilha até encontrar um de seus componentes, e geralmente o erro está lá.

Não é perfeito, mas pode ajudá-lo a se desvencilhar de uma caça aos insetos.

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
Vai ser divertido procurar a linha. Especialmente quando há uma abundância de .length em meu código.

Finalmente encontrei a linha.
Não teria demorado tanto se o problema tivesse sido resolvido.

+1, o registro do console de vue está faltando. Tome o seguinte, por exemplo. Ele está me informando sobre a pilha de componentes, o que é bom, mas não há referência ao número da linha aqui, e toda a pilha de chamadas aponta para compilar o código vue, não meu código de componente. Um número de linha próximo ao nome do componente é tudo o que precisa.

image

Também estou tendo problemas para depurar sem números de linha ...

image

image
Desafio aceito.

Isso tem sido uma chatice há anos e ainda é.

Eu estava lendo isto esperando que alguém já tivesse algum hack supersecreto para isso ou alguma atualização

+1

TypeError: Cannot read property 'length' of undefined

mas eu tenho 30-50.comprimento e não sei onde cometi um erro.

Nós realmente precisamos do número da linha em erros de renderização.

Qualquer solução alternativa?

Posso confirmar, estou aqui apenas olhando para o meu código ... sem nenhuma pista de por que ele está falhando.

Se Vue tiver desvantagens, esta seria a única

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

Questões relacionadas

franciscolourenco picture franciscolourenco  ·  3Comentários

Jokcy picture Jokcy  ·  3Comentários

aviggngyv picture aviggngyv  ·  3Comentários

robertleeplummerjr picture robertleeplummerjr  ·  3Comentários

wufeng87 picture wufeng87  ·  3Comentários