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)
*/
当然,实际的“错误”无关紧要-堆栈跟踪正是需要找出链中到底是什么的内容。如果可用,还可以通过使用JS的console.trace()
(如果可用)来获得大致相同的输出。
翻译自: https://davidwalsh.name/javascript-stack-trace