NodeJS监听80端口时运行出错的解决方法


高高兴兴写了个测试程序来跑NodeJS应用,满心欢喜以为一定没有问题,在终端输入命令:

node server.js

结果出错退出,一下子傻眼了:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EACCES
    at errnoException (net.js:904:11)
    at Server._listen2 (net.js:1023:19)
    at listen (net.js:1064:10)
    at Server.listen (net.js:1138:5)

奇了怪了,之前运行示例程序都能正常的,自己的这个程序也没改什么,怎么就跑不了了呢?!

仔细检查修改后的代码,发现因为我机器上没有其他Web Server,所以我把端口从8080改成了默认的80了,难道是这个导致的?我试着把端口改回了8080–果然就正常了!

原因是找到了,但我们不能就此止步,凡事要有点刨根问底的精神不是?^_^

皇天不负有心人,Google一番后,总算找到原因:原来,在Linux(我认为是Unix系都会,因为我测试的机器是一台Mac OSX)系统中默认要求只有root权限的程序才能访问1024以下的端口,我用普通权限想要访问80端口,所以因为权限不够被拒绝了。解决方法也很简单,要么换个端口(如8080),要么,就用超级权限(用root账户或者sudo)跑node。

Author: Rex Shen

Created: 2014-07-17 Thu 14:41

Emacs 24.3.1 (Org mode 8.2.7b)

Validate

Leave a comment

Your email address will not be published. Required fields are marked *