假设我有一个 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模块目录。
我觉得这是一件相当微不足道的事情,我忽略了一些事情。但我还没有找到谷歌在一个小时的搜索中产生的任何解决方案。也许我使用了错误的关键字!
最佳答案
Module.parent在您的模块中调用允许您访问调用它的文件的 exports
。
您可以将下面的函数放在您的 main.js
中,您可以在您的模块中调用 module.parent.filename()
。
module.exports.filename = function () {
返回 __文件名;
}
关于node.js - 获取从中调用模块的文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25414764/