我想知道如何在运行时重新加载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模块。而带有快递服务器的app.js模块需要完全重新启动。
在不启动app.js的第二个进程的情况下,有什么方法可以做到这一点?
发布于 2019-10-31 14:10:48
现在很简单,我更喜欢自己编写它,以减少依赖。
function clearModule(moduleName) {
let mp = require.resolve(moduleName)
if (require.cache[mp]) {
delete require.cache[mp]
console.log(`[clear] module: ${mp}`)
}
}
function requireReload(moduleName) {
clearModule(moduleName);
return require(moduleName);
}https://stackoverflow.com/questions/40946522
复制相似问题