Node.js每n分钟重新加载一次外部文件

我有一个关于在节点中加载外部文件的问题。

基本上我正在加载一个外部的JSON文件,其中包含一些configuration,这个文件每10分钟由一个外部进程修改。 我怎样才能重新加载这个文件每10分钟,而不重新启动节点?

我试过这个解决scheme:

delete require.cache['/home/conf/myfile.json'] 

但有些人反对。 有谁能够帮助我?

最后,我改变了我的代码,现在我使用fs.readFile来加载我的json文件,而不是使用require。

然后,我使用node-watch检查文件中的更改并重新加载它。

几个选项。 您可以使用setInterval 10分钟,并在callback中读取文件。 否则,您可以使用fs.watch并在文件实际更改时触发重新加载。

根据评论更新

如果您使用require,则只会加载一次文件,无论您需要多less次,并且没有真正的机制来使所需的文件无效 。 你可以创build一个包装的function,并要求相反。 你的包装是你需要的文件,它暴露了一个函数返回你当前的configuration。 在这个模块里面,你可以创build上面提到的setTimeout刷新。

你可以看看我的模块无效的模块,使您可以使所需模块无效。 然后模块将自动重新加载进一步访问。

例:

模块./myModule.js

 module.invalidable = true; var count = 0; exports.count = function() { return count++; } 

主模块./index.js

 require('module-invalidate'); var myModule = require('./myModule.js'); console.log( myModule.count() ); // 0 console.log( myModule.count() ); // 1 setInterval(function() { module.constructor.invalidateByExports(myModule); console.log( myModule.count() ); // 0 console.log( myModule.count() ); // 1 }, 10*60*1000);