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/
-
通常这意味着像Apache这样的另一台服务器已启用。 所以停下来
sudo服务apache2停止
-
或者你有
npm start
已经在另一个terminal上运行了 -
或者Skype正在运行。 在这种情况下转到设置并更改它的端口。 注销nlogin
进入工具 – >选项 – >高级 – >连接,取消勾选“使用端口80和443作为替代”。 SRC
-
或使用另一个端口
http-server -a localhost -p 8000
我build议安装最新的节点数据包,也许直接从Node.js服务器,也许编译它。
尝试设置一个不保留给任何服务的端口,如3700。
尽pipe如此,可能还是会看到其他代码片段。
如果你有其他的东西已经在那个端口上监听的话,也可能会导致这种情况 – 你可以尝试将端口从典型的默认值80更改为更像10014的值,看看是否有帮助!
通过在收听服务器时明确提到“IP地址”以及端口,我能够纠正错误。