Javascript 主文件从Node.js中的工作进程运行多次
我正在使用cluster.fork()在Node.js中生成工作进程。当我的应用程序运行时,突然出现了与main.js文件相关的奇怪错误,我使用该文件启动了多次运行的应用程序。这是我的档案: children.js 运行节点main.js的输出 在这一点之后,我得到一个类型错误,Children.spawn不是一个函数,它表示Main已完成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”后,它将依次侦听事件并“停止”执行。谢谢你的
我的问题是,为什么我的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