你如何找出不同文件中的调用函数?

时间:2016-09-05 12:19:28

标签: node.js

//foo.js

module.exports.foo = function foo() {
    //
}

// Bar.js

var f = require(./foo);

function bar() {
    f.foo(); // How to find out the caller function is `foo` ?
}

如何在JavaScript中找到在不同文件中的来电功能?

我在this question中看到了类似的答案。

但我得到了这个记录:

debug: caller is function wrapper() {
    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
    return fn.apply(thisArg, arguments);
  }

1 个答案:

答案 0 :(得分:1)

  

我正在编写一个全局函数来记录它正在调用的模块的错误,所以在这里我试图找出调用函数。

如果您真的需要这样做,我可能会通过Error的{​​{1}}来完成:

stack

如果您愿意,可以对function log() { var stack = new Error().stack; // ...log the stack } 字符串进行一些后期处理,但我倾向于避免使用它,因为确切的格式可以从点发行版演变为V8的点发行版(我可以告诉您您正在使用NodeJS的代码。

示例(需要支持stack的浏览器,例如Chrome [使用与NodeJS相同的JavaScript引擎]或Firefox)

Error#stack