I wonder how-to get an absolute path of a caller of a function?
Let say that:
in file a.js
I call b()
; b()
is a function defined in file b.js
. a.js
requires b
. So how do I get a.js
absolute path from b.js
in node?
This is an example how to use stacktrace to find caller file in node
function _getCallerFile() {
var filename;
var _pst = Error.prepareStackTrace
Error.prepareStackTrace = function (err, stack) { return stack; };
try {
var err = new Error();
var callerfile;
var currentfile;
currentfile = err.stack.shift().getFileName();
while (err.stack.length) {
callerfile = err.stack.shift().getFileName();
if(currentfile !== callerfile) {
filename = callerfile;
break;
}
}
} catch (err) {}
Error.prepareStackTrace = _pst;
return filename;
}