我希望能够检入log.js文件中执行了file1或file2函数print_info的文件。
我已经尝试了module.parent.parent.filename,但是即使我正在运行file2,它也会返回file1的路径。
在节点上可以吗?
我有以下文件:
log.js
function print_info(data){
console.log('Function was called in: ', module.parent.parent.filename) //here I'd like to know where function was executed
console.log(data);
};
file1.js
var print_info = require('log.js');
print_info(my_data);
file2.js
var print_info = require('log.js');
print_info(my_data);
答案 0 :(得分:3)
这是一个不好的做法,如果您需要识别调用者,则调用函数应将标识符传递给print_info
。
即在file1.js
中,输入print_info('file1', my_data)
如果出于任何原因您坚持使用“父方法”,则可以使用stacktrace:
function print_info(data){
console.log('Function was called in: ');
var stack = new Error().stack.split('\n');
console.log(stack);
console.log(data);
};
您可以读取stack
的值,第0项将是“ Error”,第1项将引用new Error()的行,第2项将指向其父项,第3项应是parent.parent
或者,如果您只需要打印整个堆栈跟踪记录,就可以执行console.trace(data)
。