Node.js重新加载依赖项而不重新启动应用程序

时间:2014-07-03 14:03:46

标签: node.js

我正在编写一个mmo服务器,有人能够创建一个服务器,当他对库文件进行更改时,它会自动反映下一个函数调用,而无需重新启动服务器本身。

(他在目录中查看更改并自动重新加载库而不重新启动)

他谈到了一个名为VM模块的节点(实验性),但我想问一下是否有任何模块可以做到这一点以及这样做的含义是什么。

很少有关于VM的研究表明它不稳定。但这是怎么做到的?在不重新启动应用程序的情况下编写服务器更新可以真正帮助开发,因为每次出现问题时都不需要回到最开始,只需要更改一个小东西,并且可以更改代码并立即尝试在客户端。

这与浏览器无关,它是MMORPG客户端服务器实现。

真的,这怎么可能?


  

注意:我知道nodemon,主管,pm2 ......   这全部重新启动应用程序,以便它杀死,并再次生成它。


我在不使用虚拟机的情况下尝试了一些东西

var watch = require('watch')

// load data
var data = require('../lib/stuff.js')


watch.createMonitor('/...', function (monitor) {
    monitor.on("changed", function (f, curr, prev) {

      data = require('../lib/stuff.js')
      console.log(data)
    })
})

console.log(data)

如果我将函数添加到stuff.js,理论上应该重新加载,并且新功能现在应该可用吗?没有重新运行主脚本?


发现我上面的代码问题不起作用,因为Node.JS缓存了需求。

2 个答案:

答案 0 :(得分:2)

Checkout热插拔:https://github.com/rlidwka/node-hotswap/blob/master/README.md

或退房热门(更近期):https://github.com/jan-swiecki/node-hotload

我认为它符合您的要求。

答案 1 :(得分:1)

我实际上为此编写了自己的模块。你可以在github reloadjs找到它。