【问题标题】:Exposing server object in expressJS to another file using module.exports使用 module.exports 将 expressJS 中的服务器对象暴露给另一个文件
【发布时间】:2016-01-25 15:19:29
【问题描述】:

在我正在构建的 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,它是一个空对象。任何想法我做错了什么

【问题讨论】:

    标签: javascript express require


    【解决方案1】:

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

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

    这是另一个与您类似的 SO 问题:Expose vs Creating object in Router file of Nodejs。看一下,但我无法将其修改为您的示例。

    【讨论】:

    • 我之前没有听说过循环依赖,我正在对这个术语进行更多研究,以帮助我了解我做错了什么。谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-08-30
    • 2015-10-31
    • 1970-01-01
    • 2015-08-08
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多