查找调用函数的文件的位置(nodejs)

如果从一个文件中调用一个模块的方法,我可以从模块中告诉该文件的位置吗? 所以

// 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(); 

我想从__filename为my-other-module.js获取__filename一些等价物。 我不想传递__filename作为参数

对于实用程序日志logging,你可以使用这个(我用这样的东西):

 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]会足够)。

更新:在github上添加回购示例

https://github.com/josemato/stackoverflow/tree/master/js-error-trace-get-filename