因某些特殊狀況,項目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端口了。
本文僅做爲總結形式,未能從新完整的實踐整個流程,若是有操做跳躍性或錯誤歡迎提出~