gpt4 book ai didi

node.js - 在 Node.js 中多次使用 require() 返回未定义的结果

转载 作者:搜寻专家 更新时间:2023-10-31 22:30:22 24 4
gpt4 key购买 nike

我在 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 中通用,它有效:

开始.js:

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

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

init();

并且,案例 2,我要求在两个模块中使用 common - 不起作用:

开始.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 未定义。有人知道为什么吗?

提前致谢。

更新

谢谢大家,下面的解决方案有效:

Your 'common' model is not needed: just require modules you need explicitly

最佳答案

你有一个循环:server -> common -> server。当循环中再次需要正在加载的模块时,Node.js require() 返回 undefined(按设计)。

解决你的循环。

关于node.js - 在 Node.js 中多次使用 require() 返回未定义的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8328717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com