A quick note to self because I'm tired of re-looking this up every once in a blue moon. Hopefully this helps others who run into this situation.
Sometimes when I go to start a Node.js server on my Mac, Node crashes and tells me:
Port 3000 is already in use
Great! Except I don't have any terminals open with a server running on that port.
In this situation, I don't care what's running on that port. I probably exited from a development environment in a way that didn't let Node.js know I was done. So I want the process currently using port 3000 to just go away.
There seem to be a whoooole bunch of ways to accomplish this task, and the method seems partly dependent on your OS. I'm not going to run through a bunch of explanations or options, I'm just going to note what works for me on Mac.
1. Find the process ID (PID)
% lsof -i :3000 COMMAND PID USER FD TYPE #... node 36823 ash 29u IPv6 #...
2. Kill it!
% kill -9 38951
And that's it.
Now port 3000 is free and I can spin up the development server I want to work on now.
If you want to learn more about what's going on with these commands and what your options are, there are a lot of resources out there of varying utility. I found this article on The Geek Diary to provide just enough detail on options for killing a process.