Node.js在Ubuntu 12.04上使用http.createServer()。listen()时未处理的“错误”事件

萨拉姆(手段你好):)

我已经在我的Windows 7机器上开发了一个node.js脚本,工作正常。 但是当我在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 ,错误仍然是一样的。

在Ubuntu上,不能在没有root权限的情况下监听<1024端口。 尝试在sudo下运行节点。

 sudo node app.js 

你可能有端口80上运行的Apache,所以它是冲突的。

使用另一个端口(不在0-1023之间),或禁用Apache。

干杯

你可能还有别的东西在80端口上运行,所以是相冲突的。

阅读这里找出什么是使用端口80,并停止它http://www.cyberciti.biz/faq/find-linux-what-running-on-port-80-command/

  1. 通常这意味着像Apache这样的另一台服务器已启用。 所以停下来

    sudo服务apache2停止

  2. 或者你有npm start已经在另一个terminal上运行了

  3. 或者Skype正在运行。 在这种情况下转到设置并更改它的端口。 注销nlogin

    进入工具 – >选项 – >高级 – >连接,取消勾选“使用端口80和443作为替代”。 SRC

  4. 或使用另一个端口

    http-server -a localhost -p 8000

我build议安装最新的节点数据包,也许直接从Node.js服务器,也许编译它。

尝试设置一个不保留给任何服务的端口,如3700。

尽pipe如此,可能还是会看到其他代码片段。

如果你有其他的东西已经在那个端口上监听的话,也可能会导致这种情况 – 你可以尝试将端口从典型的默认值80更改为更像10014的值,看看是否有帮助!

通过在收听服务器时明确提到“IP地址”以及端口,我能够纠正错误。