node.js - 获取从中调用模块的文件的路径?

标签 node.js module path

假设我有一个 node.js 模块

module.exports = function () {
  console.log(__filename);
}

在主文件中我这样调用它

var x = require('path/to/module');
x();

这给了我模块文件的路径。例如,如果我将模块存储在 ~/project-root/lib/mod.jsmain.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/

相关文章:

javascript保存函数的使用

node.js - typescript 编译器错误 TS2307 : Cannot find module "angular2/core" when loading from CDN without NPM

node.js - 插入多条记录时删除相同的数据

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/logging/log4j/LogManager 中出现异常

javascript - 有没有办法摆脱[对象: null prototype] in GraphQL

python - Python 3.2 中的 Colorama AssertionError

python + 如何知道谁删除了python模块

drupal - 防火墙后面的 Drupal 站点的类似 Google Analytics 的模块?

c# - 如何获取属性树的踪迹?

node.js - 无法为 angular-phonecat 教程 : Cannot find module 'update-notifier' 进行 npm 安装