"Error: listen EADDRINUSE: address already in use :::3000": the fix
Node.js documents EADDRINUSE as an attempt to start a server on an address that another server on your computer already occupies. The number at the end (3000 here) is the port. Most often, an earlier run of your own app is still alive in another terminal.
The error looks like this:
Error: listen EADDRINUSE: address already in use :::3000
How to fix it
- Look for an old copy first. Check other terminal tabs and editor windows for a running dev server and stop it (Ctrl+C).
- Find what holds the port. On Mac or Linux,
lsof -i :3000lists it. On Windows,netstat -ano | findstr :3000shows the process ID. - Stop that process. On Mac or Linux,
kill <PID>. On Windows,taskkill /PID <PID> /F. Only stop a process you recognise. - Or use another port. Many tools accept a
PORTenvironment variable or a--portoption. Ask your AI tool how your project sets it.
What you should see
The server starts and prints that it is listening on the port.
Not fixed? Bring the exact message to Bilo and we will look at it with you.
Still stuck? Paste your error into BiloQuick questions
Why does it happen after a crash?
The previous process may not have exited. It keeps holding the port until you stop it.
Is it safe to kill whatever uses the port?
Check the name first. If it is not something you started, pick another port instead.
Is EACCES the same?
No. Node.js describes EACCES as a permission problem, not an occupied address.
Sources and date checked
- Node.js docs: Common system errors (EADDRINUSE): https://nodejs.org/api/errors.html (checked 2026-11-01)
Written in our own words from the official pages above. Tool names are only references; we are not affiliated with them. Commands change between versions, so check the linked docs if something differs.