Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

端口占用(listen EADDRINUSE) #6

Open
keep-run opened this issue Jul 30, 2019 · 0 comments
Open

端口占用(listen EADDRINUSE) #6

keep-run opened this issue Jul 30, 2019 · 0 comments

Comments

@keep-run
Copy link
Owner

keep-run commented Jul 30, 2019

端口占用&暴力杀死端口

在利用npm start或者npm run dev启动项目时经常遇到以下错误:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: listen EADDRINUSE

很显然,这是端口占用了,怎么解决呢?

  • 第一步:执行lsof -i tcp : your-port,会返回占用该端口的进程,记住相关进程的pid;
  • 第二步:执行kill -9 your-pid。这一句会杀死相关进程;

到此,重新启动项目即可;

端口为什么会占用?

有的时候,项目的端口确实会被本地某个应用的端口占用,那么只能有以下两种解决方案:

  • 换一个项目端口,重启项目;
  • 利用前边的方法强制杀死该端口;重启项目

有时候会有另一种情况,没有应用占用端口,正常启动项目,一顿操作之后关闭项目,然后再启动项目,出现端口占用。这是为什么呢?

直观上看是项目停了,但是node服务没停,小白我尝试升级node版本,检查项目,最终发觉是我停止项目的方式有问题。正确方法是使用ctrl+c停止项目,而我误使用ctrl+z,两者区别:

  • ctrl+c:终止程序执行,结束进程;
  • ctrl+z:将前台执行的程序放到后台,并处于暂停状态;还有以下后续操作:
    • bg:启动当前后台暂停的进程; 该进程仍会后台运行;
    • fg:后台进程转向前台并启动; 如果有多个后台进程,可以先执行jobs,拿到各进程的jobsNumber,然后执行fg % jobsNumber,将指定的后台进程转向前台;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant