如果从文件中调用模块的方法,我可以从模块中告诉该文件的位置吗?所以
// my-module.js
module.exports = {
method: function () {
// in here I would like to detect the path to my-app.js
}
}
// my-other-module.js
require('my-module').method();
我想从my-module.js中为my-other-module.js访问__filename
。我不想将__filename
作为参数传递
答案 0 :(得分:1)
对于实用程序日志记录,您可以使用它(我使用过类似的东西):
module.exports = {
method: function () {
var myError = new Error();
var trace = myError.stack.split('\n');
trace = trace[1];
var filename = trace.substr(trace.lastIndexOf('/') + 1);
filename = filename.substr(0, filename.indexOf(':'));
console.log('filename', filename);
}
};
在我的情况下,我保存了" e.stack"因为你有所有错误跟踪(所有文件跟踪)。小心这种方式,因为如果你把这个代码移动到一个名为" getFilename"的函数中。那么你需要修改一些代码(因为跟踪会有所不同,也许在这个用trace = trace [2]移动代码的例子就足够了)。
https://github.com/josemato/stackoverflow/tree/master/js-error-trace-get-filename