Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找调用函数(nodejs)的文件的位置_Javascript_Node.js_Directory Structure - Fatal编程技术网

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

Javascript 查找调用函数(nodejs)的文件的位置,javascript,node.js,directory-structure,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.j

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

// 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的
\uu filename
。我不想将
\uu filename
作为参数传递给实用程序日志记录,您可以使用以下内容(我使用了类似的内容):

在我的例子中,我保存了“e.stack”,因为您有所有错误跟踪(所有文件跟踪)。请小心,因为如果将此代码移动到名为“getFilename”的函数,则需要修改代码中的某些内容(因为跟踪将不同,在本例中,使用trace=trace[2]移动代码就足够了)

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

假设
my app.js
是您的应用程序的入口点,您可以使用
process.cwd()
Edit:也假设您没有明确更改目录。啊,不,这是一个暗示。将更改问题中的名称。我的用例是让日志实用程序模块知道它是从哪个文件调用的。我不知道我可以得到堆栈跟踪而不实际抛出错误。好小费
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);
  }
};