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

时间:2017-04-26 10:31:43

标签: node.js sockets websocket socket.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

当我从控制台运行"节点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)

我可以通过添加&#39; sudo&#39;轻松解决本地计算机(MAMP)上的错误。在命令的开头,但我的托管服务提供商不允许我在生产环境中这样做。

有没有人知道如何解决错误(或者甚至知道它意味着什么),而不是将其放弃?

1 个答案:

答案 0 :(得分:0)

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

解决方案是:

  1. 不要绑定到端口80进行开发。

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