【发布时间】:2018-03-18 21:52:21
【问题描述】:
我正在使用 cluster.fork() 在 Node.js 中生成工作进程。当我突然开始收到与我用来启动我的应用程序多次运行的 main.js 文件相关的奇怪错误时,我的应用程序正在运行。这是我的文件:
children.js
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')
}
main.js
console.log('Main called')
global.Children = require('./children');
Children.spawn(4)
console.log('Main Finished')
运行节点 main.js 的输出
Main called
starting master
spawning worker.....
worker spawned
spawning worker.....
worker spawned
spawning worker.....
worker spawned
spawning worker.....
Main called
Worker activity
在这之后我得到一个类型错误,Children.spawn 不是一个函数,它说 Main Finished。
我的问题是,为什么我的 main.js 会被第二次调用?我只希望它创建工作进程,然后在打印“Main Finished”后监听事件并“停止”执行。感谢您的帮助!
【问题讨论】:
-
"Main called" 打印了 3 次,对吗?
标签: javascript node.js child-process