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:如何从模块内获取需要函数的文件名? 的相关文章

  • 在 for 循环内顺序执行 Promise

    我正在努力将两个承诺链接到一个循环中 以便第二个承诺在第一个承诺得到解决之前不会启动 我看到了一个减少的例子 还无法让它工作 如果我这样做 就像我现在所做的那样 代码会并行执行 就像这样 所有异步请求都会被触发 当然结果会很混乱 请看一下
  • 无法读取未定义的属性“isLoggedIn”

    此代码用于添加产品 然后添加到购物车和订单 并在后端使用 mongodb 创建 pdf 实际上 session isLoggedIn 是在 auth js 中定义的 检查该代码 但仍在 app js 中它给出了此错误 应用程序 JS代码 c
  • 尝试安装 gulp 时 npm 挂起

    UPDATED 当我尝试使用 npm install 或任何变体安装任何软件包时 npm install gulp g verbose npm install gulp verbose npm install gulp npm instal
  • 是否可以为 NodeJS 应用程序设置基本 URL?

    我希望能够在同一域下托管多个 NodeJS 应用程序 而不使用子域 例如 google com reader 而不是 images google com 问题是我总是输入网址的第一部分 例如Express NodeJS 中的 reader
  • node npm run watch 退出状态 3221225725

    我必须格式化我的驱动器 但我的一个项目不再工作 所有其他相同类型的项目都运行良好 这是 Laravel Vue JS 问题是我无法运行 npm run watch dev 或 production 他们都给出了错误 拉拉维尔 5 7 npm
  • JavaScript TypeError:无法读取未定义的属性“startsWith” - 不和谐机器人

    在开始这个问题时 我必须说我对 javascript 知之甚少 我在 Java 中练习过 只是想制作一个 有点 简单的 Discord 机器人 它会随机说出消息 我将各种教程中的 2 段代码组合在一起 目前有 var Discord req
  • 将文件从 url 上传到 s3 存储桶

    我有一个在 Heroku 中运行的 Nodejs 程序 它为我提供了文件的 URL 这些文件需要存储在 s3 存储桶中 据我了解 无法将文件从 url 直接上传到 s3 存储桶 您建议我如何将文件从 URL 获取到 s3 存储桶 我见过有关
  • 在 config/main.php 中找不到 Yii2 模块(不在 /vendor 文件夹下)类

    我在 api 文件夹下创建了一个模块 它本身与 yii2 高级应用程序中的后端和前端处于同一级别 文件夹结构 api 常见的 控制器 楷模 配置 模块 v1 控制器 楷模 运行 测试 网络 在 api config main php 中 r
  • Firebase 函数,admin.database().ref(...).get() 不是函数

    我正在开发一个 Android 应用程序 并使用 firebase 作为它的后端 我正在尝试让通知系统正常工作 该系统依赖于监听数据库中的更改 但遇到问题 因为我收到以下错误 想知道是否有人能够提供帮助 可以提供任何额外的代码 Fireba
  • console.dir 和 console.log 有什么区别?

    在 Chrome 中consoleobject 定义了两个似乎做同样事情的方法 console log console dir 我在网上读到过dir在记录对象之前获取对象的副本 而log只是将引用传递给控制台 这意味着当您检查记录的对象时
  • 如何确定 Console.Out 是否已重定向到文件?

    如果我的程序正在打印到控制台 我会根据 Console WindowWidth 通过插入换行符以某种方式执行自动换行 这非常有效 但是 如果程序的输出被重定向到文件或另一个程序 我希望它跳过自动换行 当出现这种情况时我该如何检测 Conso
  • 如何在 package.json 中对嵌套子模块和 TypeScript 使用“导出”?

    我想利用新的优势 出口 https nodejs org api packages html packages exportsNode js 的功能package json这样我就可以执行以下操作 exports dist index js
  • Typescript 和 Mongoose - “this”在实例方法中不可用

    我目前正在将我的 API 从 JS 转换为 TS 然而 我在猫鼬和打字稿方面遇到了一些困难 具体来说 this在我的实例方法中不可用 My code AccountSchema methods comparePassword async f
  • 使用admin sdk在云函数中执行firestore集合组查询?

    firestore collectionGroup 方法在云函数中与 firebase admin sdk 一起使用时出现错误 是否可以在云函数中对 firestore 进行集合组查询 这是我尝试使用的 firestore 查询方法 htt
  • MongoDB,从数组中删除对象

    Doc id 5150a1199fac0e6910000002 name some name items id 23 name item name 23 id 24 name item name 24 有没有办法从数组中提取特定对象 IE
  • 如何在 PyV8 中加载 Nodejs 模块?

    如何在 PyV8 中加载 Nodejs 模块 我读过所有关于 jsdom 在与 Nodejs 一起运行时有多么出色的内容 如果我在 Python 应用程序中运行 v8 使用 python 获取 Web 资源 然后将生成的 html 字符串提
  • 如何从控制器返回 PDF 文件

    我正在尝试使用 NestJs 从控制器端点返回 PDF 文件 未设置时Content typeheader 返回的数据getDocumentFile 很好地返回给用户 然而 当我添加标头时 我得到的返回似乎是某种奇怪形式的 GUID 响应总
  • Nodejs - 处理和发送多部分请求,

    我的应用程序在 Nodejs 服务器上运行 Node Js 还充当来自应用程序的请求的中间件 代理 因此 从浏览器开始 所有 REST 调用都会转到 NodeJs 然后转到 Java API 我发现处理多部分表单数据的请求时出现问题 我在
  • 语法错误:elasticdump 中的exports.runInThisContext (vm.js:53:16) 处出现意外标记 {

    我试图使用elasticdump 将elasticsearch 数据从一台服务器移动到另一台服务器 当我给予 elasticdump input http 192 168 0 122 9200 my index output http lo
  • 如何使用 Nodejs 创建 Excel 文件?

    我是一名 Nodejs 程序员 现在我有一个数据表 我想将其保存为 Excel 文件格式 我该怎么做呢 我找到了一些 Node 库 但其中大多数是 Excel 解析器而不是 Excel 编写器 我使用的是 Linux 服务器 因此需要一些可

随机推荐

  • 在 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