[eggjs/egg]dev和debug时,自定义端口 无效

2024-07-22 375 views
5

dev和debug时,如果机器的7001端口被占用,config里的port设置被egg-bin通过命令行传参改成了7002

相关启动日志 [egg-bin] server port 7001 is in use, now using port 7002

回答

9

egg-bin版本

  • egg-bin@4.15.0
2

当端口被占用时,egg-bin会自动去找一个可用的端口启动,是不是你自定义端口配置错误了, 如dev命令 "dev": "egg-bin --port=7003 dev", 这样配置是可以正常使用7003端口启动的

9

1.我是在config.prod.js中设置config.cluster来配置监听端口为8080的,这是启动配置项里介绍的方法 2.你说的egg-bin会自动去找一个可用的端口启动是通过命令行传参--port=7002实现的,会覆盖config.prod.js里的配置 3.你说的解决方式是修改dev命令(加上--port=7003),这个是写在package.json里面的,如果要在不同端口部署服务器会导致这个文件没法提交到git上 4.可以在启动配置项里提示一下如果端口7001被占用,该配置方法会失效,或者去掉自动去找一个可用的端口这样的逻辑,一般启动启动网站程序都会配置监听端口吧,我不希望自己启动的的网站随便就找一个端口监听就启动了,然后自己设定的端口又访问不了,如果端口被占用直接报错就可以

1
  • egg-bin 只是本地开发的时候用的,你不应该用它在服务器上启动。它的优先级高于 config.cluster,所以你需要手动指定。
  • 另外 config.prod.js 是线上环境的配置文件,dev 和 debug 时也不会生效。
6

说错了是config.local.js文件里面配置的,本地开发的时候也不希望自己设置的端口被随便改掉

3

其实不用那么复杂,你本地不用配置 config.cluster(你看它的名字,本来就指的是 cluster 情况下的配置)

  • 如果是同个项目要启动 2 次,那你本地直接 npm scripts 设置为 egg-bin dev,如果需要特殊端口的时候,执行命令行为 npm run dev -- --port=7002 就好了,
  • 如果是不同项目,直接 npm scripts 设置为 egg-bin dev --port=7002
8

好的,多谢