//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);
}
答案 0 :(得分:1)
我正在编写一个全局函数来记录它正在调用的模块的错误,所以在这里我试图找出调用函数。
如果您真的需要这样做,我可能会通过Error
的{{1}}来完成:
stack
如果您愿意,可以对function log() {
var stack = new Error().stack;
// ...log the stack
}
字符串进行一些后期处理,但我倾向于避免使用它,因为确切的格式可以从点发行版演变为V8的点发行版(我可以告诉您您正在使用NodeJS的代码。
示例(需要支持stack
的浏览器,例如Chrome [使用与NodeJS相同的JavaScript引擎]或Firefox):
Error#stack