我正在努力获取console.log,以保持正确的行号并执行其他功能。
var original = console.log
console.log = function() {
// Can run additional tasks
console.warn('additional stuff here');
// Wrong line number given
console.log.apply.call(original, console, arguments);
}
console.log('test')
我仔细研究了以下内容:A proper wrapper for console.log with correct line number?
但是,我似乎只能保持正确的行或从提供的答案中运行附加功能,但不能同时提供这两个功能。
谢谢:)
答案 0 :(得分:1)
使用that answer's approach时行号起作用的原因是,console.log
被您要为其指定行号的代码直接调用。在上面的代码中,不是,也不能是因为您想要注入行为。
我唯一想到的解决方案是在代码上运行的Babel插件或类似程序,以便输出的转换后的代码在调用站点上就地插入其他行为 (不在调用的函数中)。例如,它会转换:
console.log("foo");
进入
{console.warn("additional stuff here");console.log("foo");}
或类似。这将是不平凡的(尽管距离那里最复杂的Babel插件很远:-))。
答案 1 :(得分:0)
对于遇到此问题的任何人,我都编写了babel插件来解决此问题: