我试图从需要模块功能的地方获取原始文件名。我知道你可以使用__filename
获取当前文件,但我想获取原始文件。
例如,我有一个简单的模块
模块.js
module.exports(function() {
return {
print : function(message) {
console.log(__filename + ' ' + message);
};
}
});
app.js
var module = require('./module')();
module.print('hello');
最终发生的事情是它会打印module.js hello
但我真的很想看看app.js hello
.
我正在探索获取它的方法,我知道你可以使用console.trace
查看调用堆栈,但我无法解析它来执行我想要的操作。
现在我已经通过制作来解决这个问题print
函数接受另一个参数,你只需传递__filename
从内部app.js
但我想找到一个不必这样做的解决方案。
获取父模块
您可以通过使用来做到这一点module.parent https://nodejs.org/api/modules.html,然后求解filename https://nodejs.org/api/modules.html像这样的财产:
模块.js
module.exports(function() {
return {
print : function(message) {
console.log(module.parent.filename + ' ' + message);
};
}
});
app.js
var module = require('./module')();
module.print('hello');
Output:
/path/to/app.js hello
这几乎就是你所要求的。
验证解决方案
此解决方案为您提供了完全限定的路径,但您可以通过按分隔符分割路径来获取文件名。
var parentModFilename = module.parent.filename.split(/\\|\//).pop()
这会给你"/app.js"
in parentModFilename
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)