【发布时间】:2011-11-30 15:46:57
【问题描述】:
我在 node.js 中遇到了 require() 的奇怪行为。
我有简单的 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
};
我的 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,-我只需要在 server.js 中使用 common,它可以工作:
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 未定义。有人知道为什么吗?
提前致谢。
更新
谢谢大家,以下解决方案有效:
不需要您的“通用”模型:只需要您需要的模块 明确的
【问题讨论】: