在Node REPL中动态重新加载模块

时间:2015-08-31 08:01:47

标签: javascript node.js read-eval-print-loop

我正在用REPL测试我的模块:

repl.start({
    input: process.stdin,
    output: process.stdout
})
    .context.MyModule = MyModule;

当我更改并保存模块时,有没有办法自动重新加载模块,而无需退出并再次运行repl?

1 个答案:

答案 0 :(得分:1)

您可以使用public ActionResult YourAction() { // ... return Redirect("http://www.example.com"); } 模块并强制重新加载(您将丢失模块中的运行时上下文,但它应该自动重新加载)。

chokidar

如果这不起作用,我很乐意稍微使用它并获得一个有效的解决方案。

编辑:如果它没有干净地进行垃圾收集(有任何打开的句柄/监听器),每次重新加载时都会泄漏。您可能需要向var ctx = repl.start({ input: process.stdin, output: process.stdout }) .context; ctx.MyModule = require('./mymodule'); chokidar.watch('.', {ignored: /[\/\\]\./}).on('all', function(event, path) { delete require.cache['./mymodule']; ctx.MyModule = require('./mymodule'); }); 添加一个'clean-exit'函数来优雅地停止所有内容,然后在监视处理程序中调用它。

相关问题