gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 05:35:44 24 4
gpt4 key购买 nike

我正在像这样使用 REPL 测试我的模块:

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

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

最佳答案

您可以使用 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');
});

如果这不起作用,我很乐意尝试一下并找到可行的解决方案。


编辑:如果它没有干净地进行垃圾收集(有任何打开的句柄/监听器),每次重新加载时都会泄漏。您可能需要向 MyModule 添加一个“clean-exit”函数以优雅地停止一切,然后在监视处理程序中调用它。

关于javascript - 在 Node REPL 中动态重新加载模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com