版本
node v18.12.0
egg ^3.17.5
背景
先前执行 yarn start 可以正常启动,今日修改代码再次启动,发现报错,如下图(比较长没有截完)
排查与解决
1. 默认 node 版本16.18.0,vue3 项目要更高的版本,因此导致项目起不来还比较频繁,于是先忽视报错,无脑切 node 版本到 18.12.0,未果
用到16.18.0的场景更多一些,所以一直没有改 nvm 的默认,要用其他版本的时候临时切换
2. 结合报错信息 ERROR 25500 [app_worker] server got error: bind EADDRINUSE null:7001, code: EADDRINUSE,得知地址被占用
3. 在 postman 访问 http://127.0.0.1:7001 的接口,发现可以正常返回,基本能确认就是上次运行的进程没有被终止
4. 执行 lsof -i:7001 查看占用端口的任务,有如下输出,得到 pid
5. 执行 kill 97630,将该进程杀死
6. 再次启动,成功
总结
egg 项目 start 命令作为部署命令,添加了 --deamon 参数,进程将变成守护进程在后台运行,关闭终端并不会结束
上次启动之后,没有执行 yarn stop 结束 egg 服务,仅关闭了编辑器,期间也没有关机,就遇到了这个问题
如何避免:
本地运行时优选 yarn dev 命令,如果要执行 start 看部署的效果,可以
1. 将 --deamon 参数去掉,这样关闭终端或关闭编辑器,将自动终止服务
2. 本地运行之后要记着执行 yarn stop 命令,手动终止
3. 本地运行过之后就不管它,今后默认是运行的,如果无法访问再启动
4. 按照提示,添加 --ignore-stderr 命令,忽视启动时的报错
标签:启动,--,yarn,报错,版本,egg From: https://www.cnblogs.com/veinyin/p/18082394