代码之家  ›  专栏  ›  技术社区  ›  Peter I

使用附加功能和正确的行号包装console.log

  •  1
  • Peter I  · 技术社区  · 6 年前

    我很难找到控制台。日志是为了保持正确的行号和执行其他功能。

    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?

    然而,我似乎只能保留正确的行或从提供的答案运行一个额外的函数,但不能同时运行两者。

    谢谢大家:)

    2 回复  |  直到 6 年前
        1
  •  1
  •   T.J. Crowder    6 年前

    使用时行号工作的原因 that answer's approach 是吗? console.log 直接由您想要的行号调用。对于上面的代码,它不是,也不能是,因为您想要注入行为。

    我能想到的唯一解决办法是 Babel 在代码上运行的插件或类似插件,以便被输出的转换代码插入您的附加行为 原位 在调用站点(不在被调用函数中)。例如,它转换:

    console.log("foo");
    

    进入之内

    {console.warn("additional stuff here");console.log("foo");}
    

    或者类似的。这将是不平凡的(虽然远不是最复杂的babel插件)。

        2
  •  0
  •   Peter I    6 年前

    对于任何遇到这种情况的人,我都写了一个babel插件来解决这个问题:

    https://github.com/peteringram0/babel-plugin-console-source