生产和module.parent中多个实例的Node.js问题

时间:2018-07-28 15:54:23

标签: node.js module production instances

我有两个问题要问你们。

  1. 在生产中与多个实例一起运行时,会发生什么问题? (下面的代码)

    const Koa = require('koa')
    
    const router = require('./app/core/router');
    
    const app = new Koa()
    
    app.use(router.routing());
    
    module.exports = app.listen(8080)
    
  2. 以下module.parent的职责是什么?

    if(!module.parent) {
       app.listen(8080)
    }
    

感谢您的评论。

1 个答案:

答案 0 :(得分:1)

  

在生产环境中运行多个实例时会发生什么问题?

在同一主机上,不能有多个服务器侦听同一端口。要在同一主机上运行服务器的多个实例,您需要像集群模块之类的模块(该模块为您管理多个进程之间的传入连接的拆分),或者您需要在单独的端口上运行每个服务器并使用负载平衡器进行拆分在不同服务器的不同端口之间的传入请求。

  

下面的module.parent负责什么?

如果像node foo.js中那样直接从命令行加载模块,则module.parent将是null。如果一个模块是由另一个模块通过require()加载的,则module.parent将包含它被加载的模块。这可能有很多用途。在某些情况下,它可以用来决定是否运行代码测试(当模块自己运行时)。

关于为什么在您的特定代码示例中使用它,我们需要更多的代码上下文来知道他们为什么这样做。可能它是一个可以独立运行cn的模块,也可以用作现有服务器的帮助程序,并且它可以使用该模块知道其运行的方式。