我试图创建一个用Javascript + NodeJS编写的IRC机器人。该机器人应该能够在运行时加载插件,并且应该能够在更改等之后重新加载相同的插件。

什么有效?

在运行时加载文件+执行其代码。

怎么了?

如果仍然执行我的代码,则再次加载相同的插件后,但是现在我加载插件发生了两次或第n次。

当前代码:

bot.match(/\.load/i, function(msg) {
    require('./plugins/plug.js')(this);
});

module.exports  = function(bot) {
    bot.match(/\.ping/i, function(msg) {
    msg.reply('pong');
});

那么,有什么办法可以解决我的问题并使此工作正常进行?

P.s.我正在使用IRC-JS作为该机器人的基础。

已更新,已修复:



通过清除require.cache进行修复

最佳答案

require将不会重新加载文件。一旦被加载一次,它就在内存中,并且不会再次重新加载。听起来您好像想让机器人保持打开状态,并“即时”更改require的脚本内容。您可以通过删除require.cache来实现。 checkout node.js require() cache - possible to invalidate?http://nodejs.org/api/modules.html#modules_caching

关于javascript - 在运行时加载+覆盖功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13481109/

10-16 23:26