aug*_*aug 2 console module require node.js
我正在尝试从需要模块功能的地方获取原始文件名.我知道你可以使用__filename获取当前文件,但我想获取原始文件.
例如,我将拥有一个简单的模块
module.js
module.exports(function() {
return {
print : function(message) {
console.log(__filename + ' ' + message);
};
}
});
Run Code Online (Sandbox Code Playgroud)
app.js
var module = require('./module')();
module.print('hello');
Run Code Online (Sandbox Code Playgroud)
最终会发生什么,它会打印,module.js hello但我真的很想看app.js hello.
我正在探索获得它的方法,我知道你可以用它console.trace来查看堆栈的调用,但我不能解析它来做我想要的.
现在我已经通过使print函数接受另一个参数并且你只是__filename从内部传递来解决它,app.js但我想找到一个我不必这样做的解决方案.
你可以通过使用module.parent,然后filename像这样解析属性来做到这一点:
module.exports(function() {
return {
print : function(message) {
console.log(module.parent.filename + ' ' + message);
};
}
});
Run Code Online (Sandbox Code Playgroud)
var module = require('./module')();
module.print('hello');
Run Code Online (Sandbox Code Playgroud)
/path/to/app.js hello
Run Code Online (Sandbox Code Playgroud)
这几乎就是你所要求的.
此解决方案为您提供了一个完全限定的路径,但您可以通过分隔符分隔路径来获取文件名.
var parentModFilename = module.parent.filename.split(/\\|\//).pop()
Run Code Online (Sandbox Code Playgroud)
然后会给你"/app.js"在parentModFilename.
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |