У меня действительно странное поведение 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 не определены. Кто-нибудь знает почему?
Заранее спасибо.
Обновление
Спасибо, ребята, следующее решение работает:
Ваша «общая» модель не нужна: просто требуйте модули, которые вам нужны явно