многократное использование require () в Node.js возвращает неопределенные результаты

У меня действительно странное поведение require () в node.js.

У меня есть простой common.js:

module.exports = common = {
    config: require('./config/config'),
    errorCodes: require('./config/errorCodes'),
    server: require('./server/server').server,
    dbManager: require('./db/dbManager').dbManager,
    idGenerator: require('./utils/idGenerator').idGenerator
};

my server.js:

var http = require('http'),
    url = require("url"),
    common = require('../common');

var server = (function ()
{
    var server = http.createServer(function (request, response)
    {

    });

    // running server
    function startServer()
    {
        server.listen(common.config.port);
        console.log('Tracking server running at :' + common.config.port);
    }

    return {
        startServer: startServer
    };
})();

module.exports.server = server;

Итак, случай 1, - я требую common только в server.js, он работает:

start.js:

//var common = require('./common');
var server = require('./server/server').server;

// initialize whole server
var init = function ()
{
//    common.dbManager.init();
    server.startServer();
};

init();

И, случай 2, мне требуется общее в обоих модулях - не работает:

start.js

var common = require('./common');
var server = require('./server/server').server;

// initialize whole server
var init = function ()
{
    common.dbManager.init();
    server.startServer();
};

init();

Ошибка в том, что во втором случае некоторые свойства common.config и common.dbManager не определены. Кто-нибудь знает почему?

Заранее спасибо.

Обновление

Спасибо, ребята, следующее решение работает:

Ваша «общая» модель не нужна: просто требуйте модули, которые вам нужны явно

6
задан i k 1 December 2011 в 14:58
поделиться