JavaScript强制堆栈跟踪

我最近继承了一个Node.js项目,可真是吓人。代码写得很好,但是每当继承一个项目时,都立即继承了将事情弄乱的恐惧。我的目标是修复一个相当常规的错误,并且发现问题相当容易,但是要遍历代码以找出所谓的内容和经历了噩梦的内容。

因此,我做了唯一能弄清楚WTF正在进行的事情: 

// 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)
*/

当然,实际的“错误”无关紧要-堆栈跟踪正是需要找出链中到底是什么的内容。如果可用,还可以通过使用JSconsole.trace() (如果可用)来获得大致相同的输出。

 

翻译自: https://davidwalsh.name/javascript-stack-trace