簡體   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