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

时间:2015-05-19 21:55:32

标签: javascript node.js directory-structure

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

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

1 个答案:

答案 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]移动代码的例子就足够了)。

更新:在github上添加repo示例

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