在我正在构建的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,那么它就是一个空对象。任何想法我做错了
答案 0 :(得分:1)
您定义的循环依赖项很难实现和调试。这不是专门回答你的问题,但如果你在路线中唯一需要的是端口号,那么我建议你采取一种更简单的方法。也许是一个中间件,它将端口号添加到请求对象中,从而将其暴露给路由:
app.use(function(req, res, next) {
req.port = 4021;
next();
});
这是另一个类似于你的问题:Expose vs Creating object in Router file of Nodejs。看看,但我无法根据你的例子修改它。