Recentemente, herdei um projeto Node.js e, cara, isso é assustador. O código estava bem escrito, mas sempre que se herda um projeto, herda-se instantaneamente o medo de estragar tudo. Meu objetivo era corrigir um bug bastante rotineiro, e encontrar o problema foi bastante fácil, mas rastrear o código para descobrir o que chamava o quê e o que passava o quê foi um pesadelo.


Então, fiz a única coisa que podia fazer para descobrir o que estava acontecendo:



// The magic
console.log(new Error().stack);

/* SAMPLE:

Error
    at Object.module.exports.request (/home/vagrant/src/kumascript/lib/kumascript/caching.js:366:17)
    at attempt (/home/vagrant/src/kumascript/lib/kumascript/loaders.js:180:24)
    at ks_utils.Class.get (/home/vagrant/src/kumascript/lib/kumascript/loaders.js:194:9)
    at /home/vagrant/src/kumascript/lib/kumascript/macros.js:282:24
    at /home/vagrant/src/kumascript/node_modules/async/lib/async.js:118:13
    at Array.forEach (native)
    at _each (/home/vagrant/src/kumascript/node_modules/async/lib/async.js:39:24)
    at Object.async.each (/home/vagrant/src/kumascript/node_modules/async/lib/async.js:117:9)
    at ks_utils.Class.reloadTemplates (/home/vagrant/src/kumascript/lib/kumascript/macros.js:281:19)
    at ks_utils.Class.process (/home/vagrant/src/kumascript/lib/kumascript/macros.js:217:15)
*/


É claro que o “erro” real não importa: o rastreamento da pilha é exatamente o que o senhor precisa para descobrir o que está chamando o que na cadeia. Quando disponível, o senhor também pode usar console.trace() (quando disponível) para obter praticamente o mesmo resultado. O senhor pode me agradecer depois!

  • Como corrigir a impressão sIFR com CSS e MooTools

    Embora eu não seja um grande defensor do sIFR, posso entender seu fascínio. Recentemente, um cliente nos pediu para implementar o sIFR em seu site, mas encontrei um problema: os cabeçalhos do sIFR não eram impressos porque eram objetos do Flash. Veja como corrigir…

  • DWRequest: MooTools 1.2 AJAX Listener & Message Display

    Embora o MooTools 1.2 esteja em seu segundo estágio beta, sua sintaxe básica e as mudanças teóricas já foram definidas. A biblioteca JavaScript continua a melhorar e a se tornar mais flexível. O colega DZone Zone Leader Boyan Kostadinov escreveu um artigo muito útil detalhando como o senhor pode adicionar um…