2013-11-03 28 views
6

薩拉姆(意味着你好):)Node.js的未處理的「錯誤」事件中使用時http.createServer()聽()在Ubuntu 12.04

我已經開發了Node.js的腳本在我的Windows七機它工作正常。但是當我在我的Ubuntu 12.04運行它,下面的錯誤出現並且停止我的應用程序:

throw er; // Unhandled 'error' event 
      ^
Error: listen EACCES 
    at errnoException (net.js:901:11) 
    at Server._listen2 (net.js:1020:19) 
    at listen (net.js:1061:10) 
    at Server.listen (net.js:1127:5) 
    at Object.start (/httpServer/httpServer.js:9:34) 
    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) 

,並導致錯誤的位置是在這一行.listen(80)

http.createServer(onRequest).listen(80); 
          ^

我也嘗試了一些其他端口號(如100,300,500,...)而不是80,並且錯誤仍然相同。

+0

的[應用程序的NodeJS即使沒有其他進程阻塞不能在80端口上運行可能重複端口。](http://stackoverflow.com/questions/18947356/nodejs-app-cant-run-on-port-80-even-though-theres-no-other-process-blocking-th) – hexacyanide

回答

13

在Ubuntu,你不能在端口上偵聽沒有root權限< 1024。嘗試在sudo下運行節點。

sudo node app.js 
+0

我不知道這是否會被推薦在生產系統上。 –

0

我建議安裝最新的節點數據包,也許直接從Node.js服務器,也許編譯它。

嘗試設置未保留任何服務的端口,像3700

可能是heplful看到的代碼一些其他片段,雖然。

6

你可能在端口80上運行Apache,所以它是衝突的。

使用另一個端口(不在0-1023之間)或禁用apache。

乾杯

+1

是的。任何時候你看到那個「錯誤:聽EACCES'你可以打賭你要麼爭取權限,要麼與另一個應用程序爭奪端口。 – Chev

0

這也可以,如果你有別的東西已在偵聽該端口上引起的 - 你可以嘗試從典型的默認80更改端口的東西更像是10014,看看是否有幫助!

0

我能夠通過在收聽服務器時明確提及「IP地址」以及端口來糾正錯誤。

1

你可能還有其他東西在80端口上運行,所以它是衝突的。

在這裏閱讀,找出哪些是使用80端口,並停止其 http://www.cyberciti.biz/faq/find-linux-what-running-on-port-80-command/

  1. 通常這是指像Apache另一臺服務器被啓用。所以停下來。

    須藤服務的Apache2停止

  2. ,或者你有npm start已經在其他終端

  3. 運行或Skype正在運行。在這種情況下轉到設置並更改它的端口。註銷n登錄

    轉至工具 - >選項 - >高級 - >連接並取消選中「使用端口80和443作爲備選」複選框。src

  4. 或使用其他端口

    HTTP服務器的本地主機-a -p 8000

相關問題