我尝试将此作为我的第一个代码,我收到了错误
const cluster = require('cluster');
const http = require('http');
const numCPUs = 4;
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('online', function(worker) {
console.log('Worker ' + worker.process.pid + ' is online');
});
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
}
这是我得到的错误: -
工人11056在线 工人11057在线 工人11058在线 工人11059在线 events.js:141 扔掉//未处理的'错误'事件 ^
错误:绑定EADDRINUSE null:8000 at Object.exports._errnoException(util.js:870:11) at exports._exceptionWithHostPort(util.js:893:20) 在cb(net.js:1302:16) at rr(cluster.js:594:14) 在工人。 (cluster.js:564:9) 在过程中。 (cluster.js:714:8) 在emitTwo(events.js:92:20) at process.emit(events.js:172:7) 在handleMessage(internal / child_process.js:689:10) 在Pipe.channel.onread(internal / child_process.js:440:11) events.js:141 扔掉//未处理的'错误'事件 ^
错误:绑定EADDRINUSE null:8000 at Object.exports._errnoException(util.js:870:11) at exports._exceptionWithHostPort(util.js:893:20) 在cb(net.js:1302:16) at rr(cluster.js:594:14) 在工人。 (cluster.js:564:9) 在过程中。 (cluster.js:714:8) 在emitTwo(events.js:92:20) at process.emit(events.js:172:7) 在handleMessage(internal / child_process.js:689:10) 在Pipe.channel.onread(internal / child_process.js:440:11) events.js:141 扔掉//未处理的'错误'事件 ^
错误:绑定EADDRINUSE null:8000 at Object.exports._errnoException(util.js:870:11) at exports._exceptionWithHostPort(util.js:893:20) 在cb(net.js:1302:16) at rr(cluster.js:594:14) 在工人。 (cluster.js:564:9) 在过程中。 (cluster.js:714:8) 在emitTwo(events.js:92:20) at process.emit(events.js:172:7) 在handleMessage(internal / child_process.js:689:10) 在Pipe.channel.onread(internal / child_process.js:440:11) 工人11056死了 工人11057死了 工人11058死了 events.js:141 扔掉//未处理的'错误'事件 ^
错误:绑定EADDRINUSE null:8000 at Object.exports._errnoException(util.js:870:11) at exports._exceptionWithHostPort(util.js:893:20) 在cb(net.js:1302:16) at rr(cluster.js:594:14) 在工人。 (cluster.js:564:9) 在过程中。 (cluster.js:714:8) 在emitTwo(events.js:92:20) at process.emit(events.js:172:7) 在handleMessage(internal / child_process.js:689:10) 在Pipe.channel.onread(internal / child_process.js:440:11) 工人11059死了
答案 0 :(得分:1)
您是在项目的其他位置启动服务器吗?
尝试将创建的新工作人员拆分到一个单独的文件中。
worker.js
import express from 'express';
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
并将服务器设置定向到此文件
setup.js
const cluster = require('cluster');
const http = require('http');
const numCPUs = 4;
cluster.setupMaster({
exec: __dirname + '/worker.js'
});
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('online', function(worker) {
console.log('Worker ' + worker.process.pid + ' is online');
});
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
return 1;
}
答案 1 :(得分:0)
EADDRINUSE
表示其他内容已绑定到您尝试使用的端口/ IP地址组合。
要检查的事项:
您是否已将其他进程绑定到端口8000?如果是这样,也许在这里更改代码中的端口号。
您是否正在运行此代码的另一个实例? (在类UNIX操作系统上,可能使用ps
并使用适当的选项来查找它。)如果是,请终止另一个实例。 (在类UNIX操作系统上,您可以使用kill
或pkill
使用适当的选项。)