我想知道如何在运行时重新加载 Node.js 模块。
假设我有以下代码:
index.js
var myModule = require("./app.js");
app.js
var express = require("express");
express.listen(3000, function() {
console.log("app listening on port 3000");
});
我尝试了多种方法来重新加载 index.js 模块中所需的模块。但是 Express 应用不会重新启动。
我想保持 index.js 运行,因为它处理动态重新编译 Babel 模块。并且需要完全重启带有 express server 的 app.js 模块。
Is there any way to do this without starting a second process for the app.js?
最佳答案
require-uncached
是一个 npm 模块,每次都会清除缓存并从源新鲜加载一个模块,根据您的标题,这正是您感兴趣的内容。要使用它,您只需使用以下代码:
const requireUncached = require('require-uncached');
requireUncached('./app.js');
在执行此操作之前,可能有必要确保所有以前的 app.js
代码(包括 Express 服务器)都已停止,这样它们就不会因同一个端口而发生冲突。
另外,我建议考虑一下这种方法是否真的是最好的答案 - 我确信像 pm2 这样的库可以处理停止和重新启动 Node 实例,而不会有不需要的数据卡在周围的风险,这可能会导致内存泄漏。
关于javascript - 如何在运行时重新加载所需的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40946522/