Aza*_*rus 8 javascript node.js express babeljs
我想知道如何在运行时重新加载Node.js模块.
假设我有以下代码:
index.js
var myModule = require("./app.js");
Run Code Online (Sandbox Code Playgroud)
app.js
var express = require("express");
express.listen(3000, function() {
console.log("app listening on port 3000");
});
Run Code Online (Sandbox Code Playgroud)
我尝试了多种方法来重新加载index.js模块中所需的模块.但Express应用程序不会重新启动.
我想保持index.js运行,因为它处理动态重新编译Babel模块.并且需要完全重新启动具有快速服务器的app.js模块.
如果没有为app.js启动第二个进程,有没有办法做到这一点?
require-uncached是一个npm模块,它将清除缓存并每次从源代码加载模块,这正是您根据标题感兴趣的内容.要使用它,您只需使用以下代码:
const requireUncached = require('require-uncached');
requireUncached('./app.js');
Run Code Online (Sandbox Code Playgroud)
在执行此操作之前,可能需要确保所有先前app.js的代码(包括Express服务器)都已停止,以便它们不会在同一端口上发生冲突.
另外,我建议考虑这种做法是否是真正最好的答案-我敢肯定,图书馆等PM2可以处理停止,无不需要的数据游逛,这可能会导致内存泄漏的风险,重新启动节点实例.
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |