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

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

最佳答案

对于实用程序日志记录,您可以使用它(我使用了类似的东西):

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

关于javascript - 查找调用函数的文件的位置(nodejs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336847/

相关文章:

php - Instagram API - 无法获取已接受关注请求的私有(private)用户的媒体

angularjs - Angular2 和 TSD 出现 "Duplicate identifier"错误

javascript - jQuery 检查空字符串

javascript - 单击 Firefox 附加组件的小部件后更新面板内容

node.js - execSync 和 ffmpeg 执行差距

linux - 创建目录结构的 Bash 脚本

java - 多语言应用程序的项目目录结构

css - codeigniter 和添加样式表

javascript - 方法调用时的 meteor 表演微调器

javascript - 我将如何减少这个数组以便每个对象中的对象合并 javascript 但不知道键值名称