如何在node.js中的“require”之后删除模块?

2023-11-22

比方说,在我需要一个模块并执行以下操作之后:

var b = require('./b.js');
--- do something with b ---

然后我想拿走模块b(即清理缓存)。我怎样才能做到呢?

原因是我想动态加载/删除或更新模块而不重新启动节点服务器。任何想法?

- - - - 更多的 - - - - 根据删除require.cache的建议,它仍然不起作用......

what I did are few things:
1) delete require.cache[require.resolve('./b.js')];
2) loop for every require.cache's children and remove any child who is b.js
3) delete b

然而,当我打电话给b时,它仍然在那里!它仍然可以访问。除非我这样做:

b = {};

不确定这是否是处理这个问题的好方法。 因为如果稍后,我在 b.js 被修改时再次需要 ('./b.js') 。它需要旧的缓存 b.js (我试图删除它)还是新的?

----------- 更多发现 --------------

好的。我做了更多测试并使用代码..这是我发现的:

1) delete require.cache[]  is essential.  Only if it is deleted, 
 then the next time I load a new b.js will take effect.
2) looping through require.cache[] and delete any entry in the 
 children with the full filename of b.js doesn't take any effect.  i.e.
u can delete or leave it.  However, I'm unsure if there is any side
effect.  I think it is a good idea to keep it clean and delete it if
there is no performance impact.
3) of course, assign b={} doesn't really necessary, but i think it is 
 useful to also keep it clean.

您可以使用它来删除缓存中的条目:

delete require.cache[require.resolve('./b.js')]

require.resolve()将找出完整路径./b.js,用作缓存键。

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

如何在node.js中的“require”之后删除模块? 的相关文章

  • 为什么 docker 会创建空的 node_modules 以及如何避免它?

    有一些类似的问题 https stackoverflow com questions 39651908 why node modules is empty after docker build但他们还没有回答为什么 docker 创建空的n
  • 使用 React 和 Ant Design 的浮动标签

    对于我的 React 应用程序 我正在尝试构建一个表单浮动标签使用具有不同输入类型的 Antd 模板 仅使用样式使标签浮动 到目前为止 我已经能够将标签放在输入后面 但是当我将转换 转换应用于我的CSS代码时 它似乎根本不起作用 这是我的表
  • 使用 NPM 重命名文件

    有没有办法重命名 npm 脚本中的单个文件 我想准备要分发的文件 但我需要将构建的文件命名为与源代码中不同的名称 我尝试过 orn 但这似乎只能在命令行上工作 不能作为 npm 脚本工作 我特别希望添加跨平台依赖项来完成我的项目 而不是编写
  • Mongoose 中的分组(依据)?

    我已经在 shell 中构建了我想要的查询 但在 Mongoose 中编写它时遇到了问题 db commentstreams group key page id true reduce function obj prev prev num
  • 为什么 npm install 失败并出现与 node-sass 相关的错误?

    我正在使用我继承的 Rails 应用程序 我正在尝试运行npm install命令但我不断收到errors以下 我尝试跑步npm rebuild node sass正如输出中所建议的 但它没有帮助 我遇到这个问题乌班图16也OS X gt
  • JS 无法查询 MySQL 数据库。错误:connection.query 不是函数

    尝试查询我的 mySQL 数据库 但我不能 因为我得到了TypeError connection query is not a function错误 有谁知道为什么吗 我不知道为什么会发生这种情况 数据库 js const fs requi
  • 如何使用PNGJS库从rgb矩阵创建png?

    我无法从此处的文档创建 PNG 文件 编码 https github com niegowski node pngjs https github com niegowski node pngjs 该文档提供了有关操作现有 PNG 的示例 为
  • OCaml:设置模块

    我想使用 OCaml 生成数据集并在它们之间进行比较 我看过模块类型的文档 例如Set OrderType Set Make等等 但我不知道如何初始化一组或以其他方式使用它们 集合是使用函数接口定义的 对于任何给定的类型 您必须创建一个Se
  • 如何获取node.js中调用函数的文件路径?

    以下是来自三个文件的一些示例代码 foo js var myFunc require myFunc function foo myFunc message bar js var myFunc require myFunc function
  • NESTJS AWS Lambda 和 Sequelize 连接池

    由于我已经给出了下面代码片段中提到的池参数 因此是否有必要在每次 lambda 调用后关闭连接 这个 aws lambda 函数应该每分钟触发一次 池参数仅足以关闭连接吗 export const databaseProviders pro
  • 如何在 sails.js 中维护多个 API 版本

    有人有关于在使用 sails js 时维护 API 的多个版本的想法吗 想象一个简单的例子 例如 Request GET api v1 catVids min view count 10000 Response video title to
  • 如何使用 Node.js 异步服务多个 QBWC 客户端

    这个想法是使用 Node js 实现 QBWC Web 服务 它可以以异步方式服务多个传入请求 目前我正在研究qbws https github com johnballantyne qbws 这是 QuickBooks Desktop W
  • 在原子操作中测试和递减?

    我刚刚发现了一个恼人的错误 它基本上是一个竞争条件 为了便于论证 我们假设一个非常简单的文档结构 例如 id XXX amount 100 集合中存在数百个这样的文档 并且由多个编写器访问 这些编写器有效地尝试将数量降低任何值 但绝不会低于
  • webpack用css/scss文件生成js文件

    描述 在我使用的 webpack 中迷你 CSS 提取插件 plugins new MiniCssExtractPlugin filename name hash css chunkFilename name hash css 加载 scs
  • Node.js 护照会话 Cookie 域

    我正在使用 node js Passport 并试图弄清楚如何在父域上设置 cookie 以便它可用于子域 用户登录 Domain com 然后用户访问 Sub Domain com 他应该仍然处于登录状态 如何在父域上设置 cookie
  • Nodejs 的简单 put 请求,无需 Express

    我需要能够将 zip 文件上传到 Brightsign 单元 并考虑创建一个 Rest api 我可以发出 put 请求来发送 zip 文件 但问题是我找到的所有例子都是使用express之类的框架 是否可以在不使用额外框架的情况下在 No
  • Javascript/Node 中从不执行用户代码的隐藏线程:是否可能,如果可能,是否会导致竞争条件的神秘可能性?

    根据评论 答案 请参阅问题底部的更新 这个问题实际上是关于可能性的hidden不执行回调的线程 我有一个关于潜在的神秘场景的问题 涉及节点请求模块 https www npmjs com package request其中 A 构建完整的
  • 使用 Sequelize.js 和 PostgreSQL 查询关联模型上的 JSONB 字段

    我有我的两个模型Foo and Bar Foo有一个字段barId 因此有一个Bar与其关联的对象 我可以查询我所有的Foo对象并包括它们的关联Bar对象如此 我正在使用 TypeScript续集打字稿 https github com R
  • Electron Auth0Lock“原始文件://不允许”

    尝试让 auth0 与我的电子应用程序一起使用 当我按照默认教程并尝试使用用户名 密码 身份验证进行身份验证时 锁定失败并显示 403 错误 并响应 不允许使用 Origin file 我还在 auth0 仪表板中客户端设置的允许来源 CO
  • 通过条件将 Firebase 云消息传递 (FCM) 发送到多个主题的正确语法是什么

    简而言之 我想使用 Google Cloud Functions 向订阅主题组合的设备发送通知 文档说 主题中的 TopicA 主题中的 TopicB 主题中的 TopicC 我试图做的是 var topicsConditions type

随机推荐

  • Spring boot - 如何获取运行端口和IP地址[重复]

    这个问题在这里已经有答案了 我在启动 Spring Boot 应用程序时通过 shell 脚本传递端口 想知道如何获取应用程序中的运行端口和系统IP地址以打印在日志文件中 脚本 Dcom sun management jmxremote D
  • 免费的java 3d引擎[关闭]

    Closed 这个问题是无关 目前不接受答案 适用于 java 的最佳 3D 游戏引擎是什么 我正在寻找具有良好的视觉开发工具集的东西 我已经查看了维基百科上的可用列表 http en wikipedia org wiki List of
  • ggplot 增加箱线图之间的距离

    如何避免附加箱线图 谢谢 ggplot df aes x factor time y val fill ID geom boxplot scale fill manual values c WT goldenrod3 KO steelblu
  • 设置 char* 缓冲区并中间转换为 int*

    我无法完全理解我在这里读到的内容的后果 将 int 指针转换为 char ptr 反之亦然 简而言之 这行得通吗 set4Bytes unsigned char buffer const uint32 t MASK 0xffffffff i
  • 无法在 D3 JavaScript 库中获取点击事件

    我正在使用 D3 JavaScript 库将数据显示为力定向标记 效果很好 但我无法将点击事件添加到圈子中 因此 当我单击圆圈时 我会获得对该圆圈的详细分析并将其显示在模式框中 var links source x target y typ
  • 将生成的 PIL 图像保存到 django 中的 ImageField 中

    我在用qrcode生成二维码 当购买门票或购买真实时 我想生成一个二维码图像并使用 PIL 进行一些更改 最后将修改后的画布保存到模型的Image字段中 class Ticket models Model booked at models
  • Angular ui 模式与控制器位于单独的 js 文件中

    我正在尝试制作一个可以从应用程序中的多个位置实例化的模式 从这里给出的例子 Bootstrap 的 Angular 指令模态控制器与实例化模态的控制器位于同一文件中 我想将模态控制器与 应用程序 控制器分开 索引 html
  • Inno Setup 组件的详细描述

    我正在使用 Inno Setup 构建安装 并使用组件部分来允许最终用户选择要安装的可选项目 其中一些项目需要更长的描述 以便用户有足够的信息来智能地选择它们 有没有办法在某处添加更深入的描述 此解决方案仅使用正确的 Inno Setup
  • 为什么 Qt Creator 3.0.0 欢迎模式在 VM 中不起作用?

    我最初在我的 Win7 64 位机器上安装了 Qt 5 20 和 Qt Creator 3 0 它运行得很好 然后我想将其安装到Win7 32位虚拟机中 使用VirtualBox 在虚拟机中 我从 qt project org 网站开始并下
  • javascript更改获取参数而不重定向[重复]

    这个问题在这里已经有答案了 如何只更改 get 参数而不重定向 parent location search after 20 ok that changes but also redirect to the new page 有什么解决办
  • 如何使用 pip 卸载可编辑包(使用 -e 安装)

    我已经用 e 安装了一些软件包 gt pip install e git https github com eventray horus git 2ce62c802ef5237be1c6b1a91dbf115ec284a619 egg ho
  • 替代 MySQL 的 UUID 版本 1 功能?

    Context Web 应用程序 PHP 5 MySQL 5 0 91 问题 我最近从使用自动递增整数改为使用 UUID 作为某些表的主键 通过 MySQL 生成 UUID 时UUID 功能 它们彼此非常相似 uuid 1e5988da a
  • gfortran 傻瓜版: mcmodel=medium 到底是做什么的?

    我有一些代码在编译时出现重定位错误 下面是说明该问题的示例 program main common baz a b c real a b c b 0 0 call foo print b end subroutine foo common
  • 中缀运算符的 Scala 匹配分解

    我试图理解的实施List在 Scala 中 特别是 我试图了解如何使用中缀运算符编写匹配表达式 例如 a match case Nil gt An empty list case x Nil gt A list without a tail
  • 应用程序标题旁边的红点?

    在模拟器上 我注意到我的应用程序标题旁边有一个红色圆圈 类似于新下载的应用程序旁边出现的蓝色圆圈 但只是红色 它看起来是这样的 这意味着什么 我得到了这个问题的实际解决方案 这是由于配置配置文件造成的 如果您在应用程序构建设置中使用实时应用
  • 多个可选参数web api属性路由

    我是属性路由的新手 我不确定这是否可能 我有一个属性路由 它的工作原理如下 HttpGet Route GetIssuesByFlag flag int 3 public IEnumerable
  • JDBI 接受 UUID 参数吗?

    当使用 SQL 对象参数绑定时 JDBI使用 UUID 参数开箱即用 我有一个这样的方法 SqlQuery EXECUTE MyProcedure myField MyDto myMethod Bind myField UUID myFie
  • Ubuntu 升级到 19.10 后 Minikube 将无法工作

    我刚刚将 Ubuntu 从 19 04 升级到 19 10 现在 Minikube 无法启动 所以 过了一段时间 我就完全删除了Minikube minikube stop minikube delete docker stop docke
  • 无法在非 Boost 版本的 Asio 中使用 asio::placeholders::error

    我正在尝试在项目中使用 Asio 的非 Boost 版本 我正在写一个回调stream protocol acceptor async accept 签名需要asio placeholders error要通过 但当我这样做时 出现以下错误
  • 如何在node.js中的“require”之后删除模块?

    比方说 在我需要一个模块并执行以下操作之后 var b require b js do something with b 然后我想拿走模块b 即清理缓存 我怎样才能做到呢 原因是我想动态加载 删除或更新模块而不重新启动节点服务器 任何想法