在没有sudo访问的节点中运行sockets.io



我有一个socket.io节点文件,以这样的启动...

//sockets/server
var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');
app.listen(80); //the 5th line that the error refers to

当我使用" Node MyFile.js"从控制台跑步时,我会收到以下错误...

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: listen EACCES
    at exports._errnoException (util.js:746:11)
    at Server._listen2 (net.js:1112:19)
    at listen (net.js:1155:10)
    at Server.listen (net.js:1240:5)
    at Object.<anonymous> (/home/myUser/node/myFile.js:5:5)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)

我可以通过在命令的开始中添加" sudo"来轻松解决本地机器(MAMP(的错误,但是我的托管提供商不允许我在生产环境中这样做。

有人有任何想法解决错误(甚至知道它的含义(,而不是避开错误?

端口80是一个特权端口,您需要rootCAP_NET_ADMIN才能绑定到它。

解决方案是:

  1. 不要与端口80结合开发。

  2. 配置您的系统以允许端口用作普通用户。请参阅:https://superuser.com/questions/710253/allow-non-root-process-to-bind-to-port-80-and-443