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

Finding the location of a file that calls a function (nodejs)

本文关键字:文件 位置 nodejs 调用 函数 查找      更新时间:2023-09-26

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

// 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作为参数

对于实用程序日志记录,您可以使用以下命令(我使用的是这样的内容):

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 = trace[2]移动代码就足够了)。

更新:在github上添加repo示例

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