Alguém sabe como imprimir um rastreamento de pilha no Node.js?
javascript
node.js
stack-trace
mike.toString
fonte
fonte
sys.puts(new Error().stack)
(depois de adicionar o módulo do sistema)'util'
.new Error().stack
, o que funciona nos casos em que você não deseja envolver o console.trace
disso é que mostra também a linha / contexto atual questack
não. As informações estão no objeto de erro, se você quiser criar manualmente essa linha, eu acho.Agora há uma função dedicada no console para isso:
fonte
console.trace()
.--stack_trace_limit=200
Como já respondido, você pode simplesmente usar o comando trace :
No entanto, se você chegou a essa pergunta pesquisando sobre como registrar o rastreamento de pilha de uma exceção , pode simplesmente registrar o objeto Exception.
Ele registrará:
Se sua versão do Node.js for <6.0.0 , o log do objeto Exception não será suficiente. Nesse caso, ele imprimirá apenas:
Para a versão do nó <6, use em
console.error(e.stack)
vez deconsole.error(e)
imprimir a mensagem de erro mais a pilha completa, como a versão atual do nó.Nota: se a exceção for criada como uma sequência de caracteres
throw "myException"
, não será possível recuperar o rastreamento da pilha e o registroe.stack
produzirá indefinidamente .Para estar seguro, você pode usar
e funcionará para versões antigas e novas do Node.js.
fonte
console.error(e)
imprimirá tudo noe
objeto, inclusivee.stack
?Para imprimir o rastreamento de pilha
Error
no console de maneira mais legível:Resultado de exemplo:
fonte
Com um módulo Node prontamente disponível, é possível obter rastreamentos de pilha completos fora do Node (embora com uma pequena penalidade de desempenho): http://www.mattinsler.com/post/26396305882/announcing-longjohn-long-stack -traces-for-node-js
fonte
Tente Error.captureStackTrace (targetObject [, constructorOpt]) .
A função
a
eb
são capturados na pilha de erros e armazenados emmyObj
.fonte
stack
propriedade, você precisa chamar isso se Node> = 6:Error.captureStackTrace(error)
.Error.captureStackTrace
seja exibido no rastreamento da pilha, você pode omiti-lo passando-o como oconstructorOpt
arg.Pelo que sei, não é possível imprimir o rastreamento completo da pilha no nodejs, basta imprimir um rastreamento "parcial" da pilha, não é possível ver de onde você veio no código, apenas onde ocorre a exceção. Isso é o que Ryan Dahl explica neste vídeo do youtube. http://youtu.be/jo_B4LTHi3I no min 56:30 por ser preciso. Espero que isto ajude
fonte
A resposta do @isaacs está correta, mas se você precisar de uma pilha de erros mais específica ou mais limpa , poderá usar esta função:
Essa função é inspirada diretamente na
console.trace
função em NodeJS .Código fonte: versão recente ou versão antiga .
fonte
err.stack
é a resposta mais correta.Se você deseja registrar apenas o rastreamento de pilha do erro (e não a mensagem de erro), o nó 6 e superior incluem automaticamente o nome e a mensagem do erro dentro do rastreamento de pilha, o que é um pouco irritante se você deseja fazer algum tratamento de erro personalizado:
console.log(error.stack.replace(error.message, ''))
Esta solução alternativa registrará apenas o nome do erro e o rastreamento da pilha (para que você possa, por exemplo, formatar a mensagem de erro e exibi-la como desejar em outro lugar do código).
O exemplo acima imprimiria apenas o nome do erro seguido pelo rastreamento da pilha, por exemplo:
Ao invés de:
fonte
Caso alguém ainda esteja procurando isso como eu, existe um módulo que podemos usar chamado "rastreamento de pilha". É realmente popular. Link NPM
Então caminhe pelo traço.
Ou simplesmente imprima o traço:
fonte
você pode usar o módulo node-stack-trace , que é um módulo completo para rastrear pilhas de chamadas.
fonte