打印函数调用者行号的更好方法

时间:2018-11-26 06:31:48

标签: javascript node.js

所以我有一个定义如下的函数:

printPrettyJson =
    function (json)
    {
        // logger.log(chalk.magenta(JSON.stringify(json, null, 4)))
        try 
        {
            throw Error("printPrettyJson")
        }
        catch (error) 
        {
            console.log(error.stack)
            console.debug(chalk.magenta(JSON.stringify(json, null, 4)))
        }
    }    

我要做的是简单地打印出JSON类型的对象(因为否则它将显示[Object object]。但是,我想知道是否在不抛出笨拙的Error的情况下执行此操作。我从另一个文件中调用它,例如

File1

const printPrettyJson = require("file2)

Line 101: printPrettyJson(json)

File2

// printPrettyJson's definition in here

那么如何在line 101的函数调用中从File1输出printPrettyJson

2 个答案:

答案 0 :(得分:1)

您可以通过创建新的错误对象从堆栈跟踪中获取行号,实际上不必抛出错误:

printPrettyJson =
    function (json)
    {
        console.log(new Error().stack)
        console.debug(chalk.magenta(JSON.stringify(json, null, 4)))
    }    

答案 1 :(得分:1)

您可以使用console.trace输出调用堆栈而不会产生错误。它符合console API的standard规范。