假设我有一个node.js模块
module.exports = function () {
console.log(__filename);
}
在主文件中我称之为
var x = require('path/to/module');
x();
这给了我模块文件的路径。例如,如果我将模块存储在~/project-root/lib/mod.js
并且main.js
文件位于~/project-root/main.js
,则该设置会为我提供输出:
~/project-root/lib/mod.js
我想在模块中使用某些代替__filename
的东西,它可以让我找到调用它的文件的位置。 (例如,输出将是~/project-root/main.js
,在此示例中)。
模块可以位于任何地方。因此,仅使用path
来调整此示例将在其他方案中失败(例如,如果模块存储在~/project-root/node_modules/
或全局node.js模块目录中。
我感觉这是一件相当微不足道的事情,我忽视了一些事情。但我没有找到谷歌在长达一小时的搜索过程中产生的任何解决方案。也许我使用了错误的关键字!
答案 0 :(得分:2)
Module.parent允许您访问调用它的文件的exports
。
您可以将以下功能放在main.js
中,然后在模块中拨打module.parent.filename()
。
module.exports.filename = function () {
return __filename;
}