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);
}
};