是否有一种(创造性的)方式可以知道哪个模块叫函数? 为了使代码更简洁明了。
module.exports = {
foo = function(calledFrom){
console.log("foo() called from module: " + calledFrom)
}
}
// But ideally, something like:
module.exports = {
foo2 = function(){
console.log("foo2() called from module: " + arguments[0])
//Or any other way to achieve this generic behaviour
}
}
require('./module-b.js').foo('module-b')
// But ideally:
require(./module-b.js).foo2()
来自python,我喜欢简单的哲学。
答案 0 :(得分:0)
如this similar answer中所述,可以从堆栈跟踪中获取调用者路径:
const caller = require('caller-callsite');
exports.foo = function(){
const fullPath = caller().getFileName();
console.log("foo() called from module: " + fullPath)
}
一种更清洁的方法是显式地指定路径,特别是如果将其用于不仅仅是调试(这是堆栈跟踪的主要目标)的情况下:
require('./module-b.js').foo(__filename)