使用module.exports将expressJS中的服务器对象公开给另一个文件

时间:2015-10-26 13:39:01

标签: javascript express require

在我正在构建的expressJS应用程序中,我需要将服务器对象暴露给另一个文件,所以我想我可以这样做,从app.js文件到我的一条路线

var server = http.createServer(app).listen(4021, function () {

    var port = server.address().port;

    console.log('http://localhost:%d', port);
});

module.exports = server;

app.js文件

我已经从这个文件中记录了变量,它包含一个关于服务器的一堆数据对象。在我的routes.js文件中我认为会使用require

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

但是如果我在服务器变量上使用来自route.js的console.log,那么它就是一个空对象。任何想法我做错了

1 个答案:

答案 0 :(得分:1)

您定义的循环依赖项很难实现和调试。这不是专门回答你的问题,但如果你在路线中唯一需要的是端口号,那么我建议你采取一种更简单的方法。也许是一个中间件,它将端口号添加到请求对象中,从而将其暴露给路由:

app.use(function(req, res, next) {
  req.port = 4021;
  next();
});

这是另一个类似于你的问题:Expose vs Creating object in Router file of Nodejs。看看,但我无法根据你的例子修改它。