当前位置: 首页 > 知识库问答 >
问题:

node.js错误:EADDRINUSE在弹性Beanstalk主机上

司浩壤
2023-03-14

node.js出现以下错误消息:

events.js:72 
throw er; // Unhandled 'error' event 
^ 
Error: listen EADDRINUSE 
at errnoException (net.js:904:11) 
at Server._listen2 (net.js:1042:14) 
at Server.wrappedListen2 [as _listen2] (/Users/rakutza/Documents/ParcelPuppy/PP/node_modules/newrelic/lib/instrumentation/core/net.js:16:46) 
at listen (net.js:1064:10) 
at Server.listen (net.js:1138:5) 
at EventEmitter.app.listen (/Users/rakutza/Documents/ParcelPuppy/PP/node_modules/express/lib/application.js:559:24) 
at Object.<anonymous> (/Users/rakutza/Documents/ParcelPuppy/PP/app.js:109:18) 
at Module._compile (module.js:456:26) 
at Object.Module._extensions..js (module.js:474:10) 
at Module.load (module.js:356:32)

很明显,listen()试图将服务器绑定到的端口号已经在使用中。如何尝试另一个端口或关闭使用此端口的程序

应用程序是在生产模式下工作的,但一旦我将它部署到服务器上,AWS BeanStalk就会崩溃。

var slice = Array.prototype.slice;

/**
 * EventEmitter
 */

function EventEmitter() {
  if (!this._events) this._events = {};
}

EventEmitter.prototype.addListener = function(type, listener) {
  if (!this._events[type]) {
    this._events[type] = listener;
  } else if (typeof this._events[type] === 'function') {
    this._events[type] = [this._events[type], listener];
  } else {
    this._events[type].push(listener);
  }
  this._emit('newListener', [type, listener]);
};

EventEmitter.prototype.on = EventEmitter.prototype.addListener;

EventEmitter.prototype.removeListener = function(type, listener) {
  var handler = this._events[type];
  if (!handler) return;

  if (typeof handler === 'function' || handler.length === 1) {
    delete this._events[type];
    this._emit('removeListener', [type, listener]);
    return;
  }

  for (var i = 0; i < handler.length; i++) {
    if (handler[i] === listener || handler[i].listener === listener) {
      handler.splice(i, 1);
      this._emit('removeListener', [type, listener]);
      return;
    }
  }
};

EventEmitter.prototype.off = EventEmitter.prototype.removeListener;

EventEmitter.prototype.removeAllListeners = function(type) {
  if (type) {
    delete this._events[type];
  } else {
    this._events = {};
  }
};

EventEmitter.prototype.once = function(type, listener) {
  function on() {
    this.removeListener(type, on);
    return listener.apply(this, arguments);
  }
  on.listener = listener;
  return this.on(type, on);
};

EventEmitter.prototype.listeners = function(type) {
  return typeof this._events[type] === 'function'
    ? [this._events[type]]
    : this._events[type] || [];
};

共有1个答案

田马鲁
2023-03-14

您的代码中没有任何地方显示您正在监听网络套接字...

无论如何,对于Beanstalk,您应该使用port环境变量,可通过process.env.port访问。如果你不这样做,你就无法保证使用Beanstalk希望你监听的端口。

Beanstalk实例在您的Node.js应用程序前面有自己的Nginx代理。您的应用程序不能直接访问。这就是为什么你会遇到碰撞。

 类似资料:
  • 我目前正在部署Django 这是我的git仓库:https://github.com/ujin43255252/davidgram

  • 问题内容: 我正在测试Windows 7上用nodejs编写的服务器,当我尝试在命令行中运行测试器时,出现以下错误 如何在不重新启动的情况下进行修复? 问题答案: 这表示您正在尝试将服务器绑定到的地址。尝试另一个端口或使用该端口关闭程序。

  • 我正在按照这些说明在弹性Beanstalk管理的EC2实例上启用HTTPS。我可以看到弹性Beanstalk创建/etc/pki/Tls/certs/server.crt&/etc/pki/Tls/certs/server.key文件。但是,弹性Beanstalk没有创建/etc/httpd/conf.d/ssl.conf文件。但是,在环境创建后手动创建/etc/httpd/conf.d/ssl.

  • 我得到了 “importerror:libcublas.so9.0:无法打开共享对象文件:没有这样的文件或目录” 当我用“sudo python3.6...”调用应用程序时出错,而当我只调用“python3.6...”时则不会出错。 我们使用相同的配置和相同的AMI ID创建了一个单独的ec2实例:CUDA9ClassicAmazonLinuxDLAMIwithMXNetTensorflowand

  • 我使用elastic beanstalk(Tomcat8环境)部署了一个webapp。我的一个REST API请求(在服务器上)需要大约2分钟才能回复到客户端。请注意,这是一个涉及多个第三方系统调用的批量请求,因此最多需要2分钟,这对业务来说是可以接受的(至少目前是这样)。然而,我总是在60秒后在客户端收到以下错误: 问题是60秒的超时值来自何处,即弹性豆茎中60秒的超时值从何处更改?如何在ela

  • 问题内容: 我的celery_config.txt在.ebextensions中的文件脚本中 我的celery-worker.log 我的celery-beat.log 我的eb-activity.log 我不确定是什么引起了错误,但是这条特殊的线引起了我的注意。在本地,我的设置像一个咒语一样工作,我完成了所有任务,在运行工人/节拍时没有零问题,但是在生产中,主管似乎很难访问celery工人,或者