“节点.js在行动”第 2 章.演示应用错误“引发错误:错误:侦听 EACCES”

"Node.js in action" Chapter 2. Demo app error "error raised: Error: listen EACCES"

本文关键字:错误 应用 EACCES 侦听 引发错误 js 节点      更新时间:2023-09-26

我正在使用Linux Mint 14。

我创建了"Node.js in action"第 2 章中描述的聊天室应用程序。然而,

chatServer.listen(server);

在服务器中.js会导致此错误:

nodejs server.js
 info  - socket.io started
 warn  - error raised: Error: listen EACCES
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 listen (net.js:1064:10)
  at Server.listen (net.js:1138:5)
  at Object.<anonymous> (/home/andrew/Google   Drive/AJRComp/Src/JavaScript/Node.js/NodejsInAction/chatrooms/server.js:55:8)
  at Module._compile (module.js:456:26)
  at Object.Module._extensions..js (module.js:474:10)
  at Module.load (module.js:356:32)
  at Function.Module._load (module.js:312:12)
  at Function.Module.runMain (module.js:497:10)

谷歌搜索这个似乎确实在 3 月 18 日提出了同样的问题,但它只出现在 Google 搜索中,我似乎无法在 stackoverflow 站点上找到它(它可能已被删除)。

我发现使用 socket.io 处理此错误的唯一解决方案是,如果端口号小于 1024,则必须以 root 身份运行,但我正在侦听 3000。

使用

nmap 本地主机,端口 3001 被报告为打开并由 nessus 服务使用。但我似乎没有安装Nessus。那么是否有某种端口保护阻止我的应用程序侦听该端口?

提前谢谢。

Error: listen EADDRINUSE

这意味着错误地址已在使用中。在您想要 nodejs 服务器的同一端口上运行其他内容。

lsof -i:<port>

将为您提供有关端口上运行的进程的信息。

我终于设法追踪到了这一点(在 Cloud9 上,我没有回去在本地主机上尝试)。我用了

$ fuser 3000/tcp

以检查是否已使用该端口,然后

$ fuser -k 3000/tcp

以关闭该过程。

(除此之外,我不得不将用于最新版本的jquery文件更新为最新版本,以使聊天应用程序实际工作)。