获取调用模块的文件的路径?

时间:2014-08-20 21:29:25

标签: node.js module path

假设我有一个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模块目录中。

我感觉这是一件相当微不足道的事情,我忽视了一些事情。但我没有找到谷歌在长达一小时的搜索过程中产生的任何解决方案。也许我使用了错误的关键字!

1 个答案:

答案 0 :(得分:2)

模块中调用的

Module.parent允许您访问调用它的文件的exports

您可以将以下功能放在main.js中,然后在模块中拨打module.parent.filename()

module.exports.filename = function () { return __filename; }