Node.js:如何重新加载模块

2024-01-26

我是 NodeJS 新手,所以可能我犯了一些错误。

我在名为 myapp.txt 的外部文件中编写了一堆代码。我启动 Windows 版 NodeJS,并在解释器窗口中输入:

var myapp = require('d:/myapp.js');

然后我可以在外部模块中使用我的函数和变量。

问题是,如果我更新 myapp 中的代码,那么解释器不会重新读取该文件,而是使用旧版本。

现在,这首先正常吗?如何解决这个问题?

P.S.:我在互联网上花了几个小时并在许多论坛上进行了搜索,包括这个。这比其他任何事情都更令人困惑。

Thanks.


这里有一些答案 http://stackoverflow.com/questions/9210542/node-js-require-cache-possible-to-invalidate正如评论中所建议的。

然而它们对 REPL 不友好,甚至可能使用额外的模块。

这是一个单行解决方案,您可以将其粘贴到 REPL 中,其灵感来自于另一个问题的讨论:

function nocache(module) {require("fs").watchFile(require("path").resolve(module), () => {delete require.cache[require.resolve(module)]})}

每次文件更改时,该函数都会从缓存中删除您的模块。 要使用它,只需将其粘贴到 REPL 中,调用nocache("d:/myapp.js"),然后使用require通常情况下。

> function nocache(module) {require("fs").watchFile(require("path").resolve(module), () => {delete require.cache[require.resolve(module)]})}
> nocache("d:/myapp.js");
> var myapp = require("d:/myapp.js");
......
> myapp = require("d:/myapp.js");
....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js:如何重新加载模块 的相关文章

随机推荐

  • 如何在 Mongodb 上对超过 2 个字段进行分页

    如何在 Mongodb 上对超过 2 个字段进行分页 我的数据看起来像这样 id product name price rating search score 要使用 2 个排序字段 价格 id 对下一页进行分页 我正在使用此逻辑 db u
  • scikit-learn 中是否有可用的子空间聚类包

    scikit learn 中是否有任何类型的子空间聚类包可用 如果有人还有兴趣的话 是的 有一个使用 scikit learn 子空间聚类 https github com ChongYou subspace clustering 它是用于
  • 使用 C# 导出 Azure 数据库

    我的 C 程序可与 Azure 数据库配合使用 我正在使用 Microsoft Rest 和 Microsoft Azure Management 库来做一些事情 数据库复制 操作 删除等 我尝试导出 Azure DB 但找不到如何在 C
  • 登录 Facebook 注册回调未调用

    这是我的 onCreate 方法 Override protected void onCreate Bundle bundle super onCreate bundle setContentView R layout activity s
  • 通用多对多关系

    我正在尝试创建一个消息传递系统 其中消息的发送者和接收者可以是通用实体 这对于发件人来说似乎很好 其中只有要引用的对象 GenericForeignKey 但我不知道如何为收件人解决这个问题 GenericManyToManyKey 下面是
  • 通过将值与列名匹配来填充 data.frame

    我有两个数据框 df1 空 但具有特定的名称 apple orange banana pear grape 0 0 0 0 0 df2 fruit1 count1 fruit2 count2 apple 2 pear 1 grape 4 o
  • 如何比较两个 .NET 对象图的差异?

    在我们的客户端 服务器应用程序中 我们一直使用 BinaryFormatter 进行序列化过程 出于性能原因 我们正在尝试迁移到 protobuf net http code google com p protobuf net http c
  • javax.persistence 字段、getter 或 setter 上的注释?

    我目前正在学习 Hibernate 和 Java Persistence API 我有一个 Entity 类 需要将注释应用于各个字段 我已经在下面的代码中包含了它们可以去的所有三个地方 我应该将它们应用于字段本身 getter 还是 se
  • 有条件地操作数组中元素的属性

    我是 javascript 新手 正在尝试通过玩具示例学习一些基础知识 假设我有一个包含六个人数据的数组 const myArray id 1 value 75 friends 3 id 2 value 40 friends 4 id 3
  • 使用带有闭包映射的failFast会破坏“并行”步骤

    不确定这是我对 Groovy 的有限了解还是 Pipeline 的怪癖parallel步 我无法让它接受failFast如果我使用映射而不是单独传递每个闭包 def map map spam node echo spam map eggs
  • SQL Server:如何在选择期间从另一个表设置列别名?

    我有2张桌子 Table 1 DB1 DB2 DB3 DB4 DB5 Some other identifiers Table 2 EnumText EnumValue Some other identifiers 我想做的是 从表1中选择
  • 异步任务。哪种架构? (或 ZeroMQ 中的模式)

    我希望 Linux 服务器 主机上的一个应用程序与虚拟机中 Win7 客户端 上的应用程序进行通信 选择的库是 ZeroMQ 但如何管理异步任务呢 让我举个例子吧 VM 中的应用程序以任意时间间隔生成任务并将其发送到 Linux 盒子 这将
  • 在Python中定义嵌套字典

    我想在 python 中定义一个嵌套字典 我尝试了以下方法 keyword MyTest Later I want to pull this iterating through a list key test1 sections dict
  • 您可以将原始 WebGL 纹理与 Three.js 一起使用吗

    我有一个相当复杂的架构 我在 Three JS 中完成大部分工作 但我也有一个特殊的渲染器 可以直接渲染到原始 WebGL 纹理 是否可以在 Three js 纹理 中使用此 WebGL 纹理 看起来 Three JS 纹理类只是图像 视频
  • Zend_Validate_Db_RecordExists 针对 2 个字段

    我通常使用 Zend Validate Db RecordExists 来更新或插入记录 这对于一个要检查的字段来说效果很好 如果要检查两个字段怎么办 validator new Zend Validate Db RecordExists
  • 如何使用 python 和 beautiful soup 将 html 页面拆分为多个页面

    我有一个像这样的简单的 html 文件 事实上 我从 wiki 页面中提取了它 删除了一些 html 属性并转换为这个简单的 html 页面 h1 draw electronics schematics h1 h2 first header
  • 变量只能全局“声明”,但不能修改/(单独初始化)

    免责声明 这可能是一个非常微不足道的问题 虽然我找不到答案 and 一个纯粹的理论问题 我从来不需要这样做 也从未见过使用此类构造的代码 但我只是好奇如何 为什么会发生这种情况 The C C 双标签 因为我在 C 和 C 上测试了这部分代
  • Android 多点触控和双击协同工作以实现图像视图

    你好 我在 LinearLayout 垂直方向 中有两个图像视图 我正在为两个 Imageview 设置 setOnTouchListener 这样我就能够观察多点触摸缩放以及 ImageView 的所有拖动 当我尝试实现 OnDouble
  • PHP 5.3 中引入的您最喜欢的功能是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Node.js:如何重新加载模块

    我是 NodeJS 新手 所以可能我犯了一些错误 我在名为 myapp txt 的外部文件中编写了一堆代码 我启动 Windows 版 NodeJS 并在解释器窗口中输入 var myapp require d myapp js 然后我可以