因某些特殊状况,项目cdn作了防盗链,而后本地开发也收到了限制,在cdn设置了一些本地ip的白名单,竟然对端口支持很差,结果有时候能够访问cdn资源,有时候又不行,无奈,和运维、后端商量讲开发地址暂时改为80
端口,以便正常开发~html
Egg.js的项目改端口很简单啦。可是也有一些要注意的,本文面向MacOS
,固然Linux
系统应该一样适用。
这里有几个方案,供君参考:node
跑哪一个命令就在这个命令后面加--port=80
,例如:web
"start": "egg-scripts start --daemon --title=egg-server-51la-web-egg --workers=2 --port=80", ...
dev同理。npm
部分配置以下:json
'use strict'; module.exports = app => { const exports = {}; exports.cluster = { listen: { port: 80, hostname: '127.0.0.1', }, }; return exports; };
以上方法都适用于执行egg-scripts
时有效(例如npm start
)。若是须要执行npm run dev
,开启,请参考上文修改package.json的方案。后端
我最初经过设置
config.local.js
来实现,发现居然不成功,报错!报错信息部分以下:服务器[egg-scripts] 2019-03-20 14:30:48,033 ERROR 7988 [app_worker] server got error: bind EADDRINUSE null:7001, code: EADDRINUSE
比较麻烦,不过看了下官方文档,应该也是能够很好的支持的。有兴趣请阅读该节:app
若是你不看这部分,很遗憾,你确定跑不起来。你可能会遇到下面这些异常状况:运维
ERROR 3810 nodejs.AppWorkerDiedError: [master] app_worker#1:3813 died (code: 0, signal: null, suicide: false, state: dead), current workers: []
缘由是Node.js的服务器端默认是没法使用1024如下的端口的。咋办呢?使用sudo
哈哈哈。就是这样:sudo npm start
或者sudo npm run dev
。socket
也有多是:
ERROR 3709 [app_worker] server got error: bind EADDRINUSE null:80, code: EADDRINUSE
端口被占用了!node.js的server服务没法在ctrl+c后马上终止。好比默认7001未能正常关闭,经过`config.local.js文件修改的80端口也没有可以生效,每次启动服务都是启动了新的端口
7002,此时:须要查出占用
7001的端口的
pid`,将它终止。操做效果大体以下:
P750TM:51la-web-egg whidy$ lsof -i:7001 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 2982 whidy 25u IPv6 0x2f7a1da313a05e4d 0t0 TCP *:afs3-callback (LISTEN) P750TM:51la-web-egg whidy$ kill kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] P750TM:51la-web-egg whidy$ kill 2982 P750TM:51la-web-egg whidy$ lsof -i:7001
上面用到两个命令:lsof -i:[端口号]
,kill [进程的PID]
,最后从新查询7001就没有任何返回,说明Ok了,再次执行sudo npm run dev
,那么就很好的使用80端口了。
本文仅做为总结形式,未能从新完整的实践整个流程,若是有操做跳跃性或错误欢迎提出~