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?
Failing to restore the prepareStackTrace function can cause issues. Here's an example that removes side-effects
function _getCallerFile() { var originalFunc = Error.prepareStackTrace; var callerfile; try { var err = new Error(); var currentfile; Error.prepareStackTrace = function (err, stack) { return stack; }; currentfile = err.stack.shift().getFileName(); while (err.stack.length) { callerfile = err.stack.shift().getFileName(); if(currentfile !== callerfile) break; } } catch (e) {} Error.prepareStackTrace = originalFunc; return callerfile; }
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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With