Node.js 如何在加载配置之前延迟NodeJS/Express的执行

Node.js 如何在加载配置之前延迟NodeJS/Express的执行,node.js,express,Node.js,Express,我正在开发一个从远程数据存储加载配置数据的expressjs应用程序。我有一个模块中的所有配置代码 在主express应用程序中需要配置模块之后需要的模块也取决于完成的配置请求 是否有办法暂停express应用程序的启动,直到配置模块完成?或者是一种确保在应用程序的其余部分继续之前加载配置的方法。我希望不必在每个模块中放入逻辑来检查配置是否已加载 // config.js var zmq = require('zmq'); var sock = zmq.socket('req'); sock.

我正在开发一个从远程数据存储加载配置数据的expressjs应用程序。我有一个模块中的所有配置代码

在主express应用程序中需要配置模块之后需要的模块也取决于完成的配置请求

是否有办法暂停express应用程序的启动,直到配置模块完成?或者是一种确保在应用程序的其余部分继续之前加载配置的方法。我希望不必在每个模块中放入逻辑来检查配置是否已加载

// config.js 
var zmq = require('zmq');
var sock = zmq.socket('req');
sock.connect(endpoint);
sock.send('config');
sock.on('message', function(data) {
  module.exports = JSON.parse(data.toString());
});

// server.js Main application
....
var config = require('./config'); // contains connection information for DB, 3rd party apps, etc...
var db = require('./db'); // Uses the config to know where to connect
var logger = require('./logger');
....
var debug = config.isDebug;
...


// db.js module
var config = require('./config');
var host = config.host
var port = config.port
....


// logger.js module
var config = require('./config');
var logLevel = config.logLevel;
....

最简单的方法是,config会让其他模块知道它何时完成

配置模块的导出应该是一个接受回调的函数,而不是什么也不返回。当模块完成加载(或者如果已经加载)时,将执行回调。该代码类似于:

// db.js module
var config = require('./config');
config(function(err, config) {
    if(err) throw err; // could not load configuration
    var host = config.host
    var port = config.port
})

最简单的方法是,config会让其他模块知道它何时完成

配置模块的导出应该是一个接受回调的函数,而不是什么也不返回。当模块完成加载(或者如果已经加载)时,将执行回调。该代码类似于:

// db.js module
var config = require('./config');
config(function(err, config) {
    if(err) throw err; // could not load configuration
    var host = config.host
    var port = config.port
})

回调中的
module.exports=
对我来说似乎没有意义
module.exports=
对我来说似乎没有意义