Javascript 主文件从Node.js中的工作进程运行多次

Javascript 主文件从Node.js中的工作进程运行多次,javascript,node.js,child-process,Javascript,Node.js,Child Process,我正在使用cluster.fork()在Node.js中生成工作进程。当我的应用程序运行时,突然出现了与main.js文件相关的奇怪错误,我使用该文件启动了多次运行的应用程序。这是我的档案: children.js 运行节点main.js的输出 在这一点之后,我得到一个类型错误,Children.spawn不是一个函数,它表示Main已完成 我的问题是,为什么我的main.js会被第二次调用?我只想让它创建工作进程,在打印“Main Finished”后,它将依次侦听事件并“停止”执行。谢谢你的

我正在使用cluster.fork()在Node.js中生成工作进程。当我的应用程序运行时,突然出现了与main.js文件相关的奇怪错误,我使用该文件启动了多次运行的应用程序。这是我的档案:

children.js

运行节点main.js的输出

在这一点之后,我得到一个类型错误,Children.spawn不是一个函数,它表示Main已完成


我的问题是,为什么我的main.js会被第二次调用?我只想让它创建工作进程,在打印“Main Finished”后,它将依次侦听事件并“停止”执行。谢谢你的帮助

这是预期的行为,分叉的是整个过程,而不仅仅是从中调用
cluster.fork()
的模块。工人从流程开始就开始执行;)

您的群集模块应该是您的主要入口点。

“main called”多打印3次,对吗?
const cluster = require('cluster');
if (cluster.isMaster) {
    console.log('starting master')
    const spawnWorker = function () {
        let worker = cluster.fork();
        return worker
    }

    exports.spawn = function (cnt) {
        for (let i = 0; i < cnt; i++) {
            console.log('spawning worker.....')
            spawnWorker()
            console.log('worker spawned')
        }
    }
}
else {
    console.log('Worker activity')
}
console.log('Main called')
global.Children = require('./children');
Children.spawn(4)
console.log('Main Finished')
Main called
starting master
spawning worker.....
worker spawned
spawning worker.....
worker spawned
spawning worker.....
worker spawned
spawning worker.....
Main called
Worker activity