Como posso imprimir uma mensagem no console de erro, preferencialmente incluindo uma variável?
Por exemplo, algo como:
print('x=%d', x);
javascript
debugging
Mark Harrison
fonte
fonte
Respostas:
Instale o Firebug e, em seguida, você pode usar
console.log(...)
econsole.debug(...)
etc. (consulte a documentação para obter mais informações).fonte
console.log()
etc, devem funcionar em todos os navegadores, incluindo o IE. No entanto, em todos os casos, você precisa abrir a janela do depurador no momento, caso contrário, as chamadas paraconsole
gerarão erros.Você também pode adicionar CSS às suas mensagens de log:
fonte
console.log
você é capaz de usar css dentro do console: |Exceções são registradas no console do JavaScript. Você pode usar isso se quiser manter o Firebug desativado.
Uso:
fonte
throw
deve ser embrulhado em umsetTimeout
?Uma boa maneira de fazer isso que funciona em vários navegadores é descrita em Depurando JavaScript: Jogue Fora Seus Alertas! .
fonte
throw()
definitivamente não é o caminho para fazer isso. você terá problemas mais cedo ou mais tarde. para mim foi mais cedo :(Aqui está uma solução para a pergunta literal de como imprimir uma mensagem no console de erros do navegador, não no console do depurador. (Pode haver boas razões para ignorar o depurador.)
Como observei nos comentários sobre a sugestão de gerar um erro para obter uma mensagem no console de erros, um problema é que isso interromperá o encadeamento de execução. Se você não quiser interromper o encadeamento, poderá lançar o erro em um encadeamento separado, criado usando setTimeout. Daí a minha solução (que acaba sendo uma elaboração da de Ivo Danihelka):
Incluo o tempo em milissegundos desde o horário de início, pois o tempo limite pode distorcer a ordem na qual você espera ver as mensagens.
O segundo argumento para o método Error é o nome do arquivo, que é uma string vazia aqui para impedir a saída do nome de arquivo e número de linha inúteis. É possível obter a função de chamada, mas não de uma maneira simples e independente do navegador.
Seria bom se pudéssemos exibir a mensagem com um ícone de aviso ou mensagem em vez do ícone de erro, mas não consigo encontrar uma maneira de fazer isso.
Outro problema com o uso do arremesso é que ele pode ser pego e jogado fora por um try-catch anexo, e colocar o arremesso em um thread separado evita esse obstáculo também. No entanto, existe ainda outra maneira pela qual o erro pode ser detectado, ou seja, se o manipulador window.onerror for substituído por um que faça algo diferente. Não posso ajudá-lo lá.
fonte
Se você usa o Safari , pode escrever
e aparece diretamente no console do navegador.
fonte
console.log()
.console.log()
. Isso não era verdade até recentemente.Para realmente responder à pergunta:
Em vez de erro, você também pode usar informações, log ou aviso.
fonte
console.error(..)
é um recurso não padrão e não deve ser usado na produção. Qual é a sua opinião sobre isso? Você tem alguma sugestão para um programador iniciante usandoconsole.error
vsconsole.log
?console.log(...)
"não-padrão". A esse respeito,console.error
é tão estável quantoconsole.log
.Se você estiver usando o Firebug e também precisar oferecer suporte ao IE, Safari ou Opera, o Firebug Lite adiciona o suporte console.log () a esses navegadores.
fonte
O WebKit Web Inspector também suporta a API do console do Firebug (apenas uma pequena adição à resposta de Dan ).
fonte
Uma observação sobre 'throw ()' mencionada acima. Parece que interrompe a execução da página completamente (verifiquei no IE8), por isso não é muito útil para registrar "processos em andamento" (como rastrear uma determinada variável ...)
Minha sugestão é, talvez, para adicionar um textarea elemento em algum lugar no seu documento e para a mudança (ou anexar a) o seu valor (que mudaria seu texto) para obter informações de log sempre que necessário ...
fonte
console.log()
,throw()
etc. Além disso, não há nada de errado com o comportamentothrow()
que você parece sugerir - o fato de ele interromper a execução é intencional e documentado ( desenvolvedor. mozilla.org/en-US/docs/Web/JavaScript/Reference/… ), e é consistente com a maneira como as exceções são lançadas / capturadas em outras linguagens de programação. (Se você quiser registrar o conteúdo de uma variável sem parar execução, que é o queconsole.log()
é para.)console.log
- então as pessoas estavam dando alternativas. Sobrethrow()
parar a execução, é claro que é intencional, ninguém disse que não. É por isso que geralmente É não uma boa maneira de registrar informações de depuração em tempo de execução, que o que o OP queria ...Como sempre, o Internet Explorer é o grande elefante em patins que o impede de usar
console.log()
.O log do jQuery pode ser adaptado com bastante facilidade, mas é uma dor ter que adicioná-lo a qualquer lugar. Uma solução se você estiver usando o jQuery é colocá-lo no seu arquivo jQuery no final, minificado primeiro:
fonte
Visite https://developer.chrome.com/devtools/docs/console-api para obter uma referência completa da API do console
Nesse caso, o objeto seria sua string de erro
fonte
fonte
trabalhando para mim .. eu estou procurando por isso .. eu usei o Firefox. aqui está o meu script.
funciona no Firefox e Chrome.
fonte
A maneira mais simples de fazer isso é:
fonte
Para responder sua pergunta, você pode usar os recursos do ES6,
fonte
Isso não é impresso no console, mas abre um pop-up de alerta com sua mensagem, que pode ser útil para algumas depurações:
apenas faça:
fonte
Com a sintaxe es6, você pode usar:
fonte