最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何确定执行哪个文件函数?

运维笔记admin17浏览0评论

如何确定执行哪个文件函数?

如何确定执行哪个文件函数?

我希望能够检入log.js文件,其中执行了print_info(file1或file2)函数。

我已经尝试过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);
回答如下:

这是一种不好的做法,如果你需要识别调用者,调用函数应该将标识符传递给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项将引用新的Error()行,第2项将引用其父项,第3项应该是parent.parent。

或者,如果你只是打印整个堆栈跟踪,你可以做qazxsw poi。

发布评论

评论列表(0)

  1. 暂无评论