Eggjs 之绑定 80 端口引发的一场血案

前记

最近在做微信开发本地测试,需要用到 80 端口;鉴于 Eggjs 默认端口为 7001,于是开始了一场 Eggjs 绑定 80 端口之战

Scripts

scripts 改造,将 dev 命令改为如下:

1
"dev": "egg-bin dev --port=80",

问题一

当运行 npm run dev 之后出现下面问题

1
bind EACCES null:80, code: EACCES

绑定 80 端口失败,看来是权限不够

解决方案:sudo 高权限运行

问题二

当运行 sudo npm run dev 之后出现下面问题

1
sudo: npm:找不到命令

看来是 bin 下面没有可执行文件

解决方案:ln -s

1
2
3
4
5
6
7
$ which npm
> /home/jakehu/.nvm/versions/node/v8.12.0/bin/npm
$ sudo ln -s /home/jakehu/.nvm/versions/node/v8.12.0/bin/npm /usr/bin/npm

$ which node
> /home/jakehu/.nvm/versions/node/v8.12.0/bin/node
$ sudo ln -s /home/jakehu/.nvm/versions/node/v8.12.0/bin/node /usr/bin/node

最后只需要运行 sudo npm run dev 就可以了


如果出现 bind EADDRINUSE null:80, code: EADDRINUSE 错误,表示有程序占用 80 端口,pkill 掉即可