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

时间:2013-11-03 21:31:31

标签: node.js ubuntu-12.04

Salam(意为你好):)

我在我的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,错误仍然相同。

6 个答案:

答案 0 :(得分:13)

在Ubuntu上你无法监听端口< 1024没有root权限。尝试在sudo下运行节点。

sudo node app.js

答案 1 :(得分:7)

您可能在端口80上运行了apache,因此它存在冲突。

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

干杯

答案 2 :(得分:1)

你可能在端口80上运行了其他东西,所以它有冲突。

请阅读此处以了解使用端口80的内容并将其停止 http://www.cyberciti.biz/faq/find-linux-what-running-on-port-80-command/

  1. 通常它意味着启用了另一个像apache这样的服务器。所以停止它。

    sudo service apache2 stop

  2. 或您已在另一个终端中运行npm start

  3. 或Skype正在运行。在这种情况下转到设置并更改它的端口。退出登录

    转到工具 - >选项 - >高级 - >连接并取消选中框"使用端口80和443替代"。src

  4. 或使用其他端口

    http-server -a localhost -p 8000

答案 3 :(得分:0)

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

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

但是,看看其他一些代码片段可能会很有用。

答案 4 :(得分:0)

如果您已经在该端口上侦听了其他内容,也会导致这种情况 - 您可以尝试将端口从典型的默认80更改为更像10014的内容,看看是否有帮助!

答案 5 :(得分:0)

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