Node.js:如何从模块内获取需要函数的文件名?

2024-04-24

我试图从需要模块功能的地方获取原始文件名。我知道你可以使用__filename获取当前文件,但我想获取原始文件。

例如,我有一个简单的模块

模块.js

module.exports(function() {
   return {
     print : function(message) {
        console.log(__filename + ' ' + message);
     };
   }
});

app.js

var module = require('./module')();
module.print('hello');

最终发生的事情是它会打印module.js hello但我真的很想看看app.js hello.

我正在探索获取它的方法,我知道你可以使用console.trace查看调用堆栈,但我无法解析它来执行我想要的操作。

现在我已经通过制作来解决这个问题print函数接受另一个参数,你只需传递__filename从内部app.js但我想找到一个不必这样做的解决方案。


获取父模块

您可以通过使用来做到这一点module.parent https://nodejs.org/api/modules.html,然后求解filename https://nodejs.org/api/modules.html像这样的财产:

模块.js

module.exports(function() {
   return {
     print : function(message) {
        console.log(module.parent.filename + ' ' + message);
     };
   }
});

app.js

var module = require('./module')();
module.print('hello');

Output:

/path/to/app.js hello

这几乎就是你所要求的。

验证解决方案

此解决方案为您提供了完全限定的路径,但您可以通过按分隔符分割路径来获取文件名。

var parentModFilename = module.parent.filename.split(/\\|\//).pop()

这会给你"/app.js" in parentModFilename.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js:如何从模块内获取需要函数的文件名? 的相关文章

随机推荐

  • 在 Android 锁屏上显示自定义信息 [重复]

    这个问题在这里已经有答案了 我想自定义锁屏 The default Lock screen is like this 我想修改锁定屏幕的这一部分并让所有其他内容保持不变 当用户锁定手机时 它应该在红色框中显示自定义信息 到目前为止 我已经看
  • mockk java.lang.AssertionError:验证失败:调用 1 of 1:未调用

    我正在使用模拟运行单元测试 当尝试验证方法时 我收到断言错误 并且不知道如何运行测试 这是我的测试方法 get Rule var rule TestRule InstantTaskExecutorRule val autoDownloads
  • Django 中的内联表单集 - 删除某些字段

    我需要创建一个内联表单集 a 排除一些字段MyModel完全显示出来 b 显示一些字段MyModel但阻止它们被编辑 我尝试使用下面的代码 使用values 为了将查询集过滤为我想要返回的值 然而 这失败了 有人有什么想法吗 class P
  • DataDog 事件会自动恢复

    我创建了一个事件监视器 用于捕获有错误的事件 并通过特殊的信使通知有关警报的信息 一切都很顺利 但我注意到此类警报会自行自动恢复一段时间 As I understand it is because of this parameter 因此
  • VB.NET中获取CheckBoxList的所有选中值

    我用过ASPCheckBoxList控制 现在我想要的是在VB代码中获取所有选定的值 HTML
  • 查找包含相似字符串的sql记录

    我的下表有 2 列 ID 和标题 其中包含超过 500 000 条记录 例如 ID Title 1 Aliens 2 Aliens 1986 3 Aliens vs Predator 4 Aliens 2 5 The making of A
  • 为什么java中的嵌套类与C#中的嵌套类在以下方面有所不同?

    我发现了一些类似的帖子 但找不到明确解释这一点的答案 我已经执行了类的嵌套 即 内部 类存在于 外部 类中 并尝试实例化内部类 这就是我遇到的场景 如果是 C class outside public class inside public
  • 龙目岛和吉斯注射液

    我是 lombok 和 guice 注入的新手 我可以了解一般概念 但我遇到了一些我不理解的代码 并且由于语法而无法搜索 以下是代码 有人可以帮助我理解吗 import com google inject Inject import lom
  • 如何获取 mp3 文件的封面?

    我有一个 mp3 文件 当我用 Windows Media Player 阅读它时 它有专辑的封面 所以我想知道是否有办法在 javascript 或 jQuery 中获取该封面 请访问以下网址了解更多内容 http www richard
  • ctypes 包装“MessageBoxA”示例在 python33 中不起作用

    此示例位于 python 3 3 2 文档中 http docs python org 3 library ctypes html highlight ctypes ctypes http docs python org 3 library
  • 从 /var/log/mysql 删除 mysql-bin.**** 文件

    In the var log mysql我发现有很多大文件 rw rw 1 mysql adm 104875724 Nov 16 2016 mysql bin 002982 rw rw 1 mysql adm 104900467 Nov 1
  • 使用解析连接两个表

    我在 parse com 有一个数据库 我有一堂课叫做UserDetail 在该类中 我有一个名为的数组字段occupationid 对于本专栏 我有另一个类称为Occupation其中列就像occupationid occupationn
  • Rails 3 - 带 image_tag + 文本的 link_to

    这部分代码将生成我图片 png作为链接 我需要在该图像上附加一些文本 图像 文本 我尝试了类似的操作
  • 创建多彩板

    我要创建一个多彩板 从第一个方块开始为黑色 然后是蓝色 红色和黄色 这些方块对角线填充 并且没有空的彩色方块 我知道我的算法是错误的 但我不知道如何修复它 目前 我的代码打印如下 import javax swing JFrame impo
  • ruby 中的无效函数

    为什么这个功能无效呢 def request method get resource meta strip true end 意外的 期待关键字 结束 谢谢你 在 Ruby 中 不能用可选参数包围必需参数 使用 def request re
  • 我可以创建一个网址来打开带有我定义的坐标的 3 个点(A、B、C)的谷歌地图吗?

    我可以制作一个显示 3 个或更多点的谷歌地图的网址吗 就像是https maps google com maps q 58 41 881N 152 31 324W link https maps google com maps q 58 4
  • WPF中如何聚焦ListviewItem?

    I have ListBox在我的包含十个项目的应用程序中 用户一次可以看到五个项目 有时我会从代码中选择项目并设置焦点 当项目可见时 选择项目并聚焦效果非常好Form 但对于其他不可见的项目 我无法设置焦点 注意 选择后对用户可见 有人可
  • Entity Framework Core 2.0 多对多关系同一个表[重复]

    这个问题在这里已经有答案了 我在用着实体框架核心 2 0为了映射现有数据库 该数据库有两个表 Teams and SupportTeam 团队领域 身份证号 姓名 团队支持 TeamID 团队表上的外键 支持TeamID 团队表上的外键 我
  • Python“with”命令

    是这个代码吗 with open myfile as f data f read process data 相当于这个 try f open myfile data f read process f finally f close 或者下面
  • Node.js:如何从模块内获取需要函数的文件名?

    我试图从需要模块功能的地方获取原始文件名 我知道你可以使用 filename获取当前文件 但我想获取原始文件 例如 我有一个简单的模块 模块 js module exports function return print function