繁体   English   中英

“ Node.js运行中”第2章。演示应用程序错误“引发错误:错误:监听EACCES”

[英]“Node.js in action” Chapter 2. Demo app error “error raised: Error: listen EACCES”

我正在使用Linux Mint 14。

我已经创建了第2章“运行中的Node.js”中描述的聊天室应用。

chatServer.listen(server);

在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 localhost,端口3001被报告为已打开并由nessus服务使用。 但是我似乎没有安装Nessus。 那么是否可能会有某种端口保护阻止我的应用程序在该端口上侦听?

提前致谢。

Error: listen EADDRINUSE

这意味着错误地址已被使用 您想要NodeJS服务器的同一端口上还有其他运行。

lsof -i:<port>

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

我最终设法找到了答案(在Cloud9上,我没有回过头来在localhost上尝试)。 我用了

$ fuser 3000/tcp

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

$ fuser -k 3000/tcp

关闭该过程。

(顺便说一句,我不得不将用来更新聊天应用程序的jquery文件更新到最新版本)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM