如何动态加载NodeJS中的外部配置文件

时间:2016-06-13 14:15:05

标签: javascript node.js caching

在NodeJS应用程序中,我想动态地从外部文件加载配置数据(要生成的报告)。我可以使用require(' path / config')

静态加载它们

但我确实有部分配置需要定期刷新,为了使它更复杂,这些配置文件包含一个必须可执行的功能。

其中一份报告如下:

const report = {
  name : 'Report 3',
  description : 'Very simple report.',
  // Some properties
  preprocessor : function() {
  },
  // Some more properties
};

module.exports = report;

使用require重新加载报表时,基本上不会重新加载。即使我改变某些东西,它也会保持不变。 (原因:require()使用缓存,理所当然。)

重新加载包含可执行函数的外部配置文件有什么好方法(可能是外部库)?

2 个答案:

答案 0 :(得分:0)

我会使用fs。如果您完全控制配置文件(否则它很危险),您可以使用eval

var fs = require('fs');

var file = fs.readFileSync(filename);
var module = {}
eval(file);

// You can access report in module.exports

如果您不想阻止您的申请(通常建议),您应该使用the async version并提供回调。

答案 1 :(得分:0)

为了解决缓存问题,我现在使用库require-without-cache。似乎可以完成这项工作。