eaddrinuse.fun
$EADDR
~/projects/the-one-that-will-definitely-ship — npm run dev
EADDRINUSE
address already in use :::3000

Ten characters standing between you and shipping. A rite of passage with a body count.

errno: -48 syscall: listen culprit: a process you forgot in March windows: -4091

The sacred text

Everyone has typed this. Everyone has felt this.

A phantom Node process from an abandoned project is still holding the socket. It has no window. It has no tab. It has only the port.

Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (node:net:1817:16) at listenInCluster (node:net:1865:12) at Server.listen (node:net:1953:7)

Exorcism

Kill whatever is squatting on 3000.

Pick your shell. Copy the command. Get your port back.

Drift

Or do nothing, and let the framework pick a new port forever.

Click it. Keep clicking. This is how you end up with five tabs running three different forgotten projects.

Port 3000 is free. For now.

Lineage

Why the collision always happens on 3000.

Rails shipped it as the development default in the mid-2000s. Node tutorials copied it. React and Next inherited it. Two decades of tooling all reaching for the same socket is a design decision nobody made on purpose.

ToolCommandPort
Ruby on Railsrails server3000
Express / Nodeapp.listen(3000)3000
Create React Appnpm start3000
Next.jsnext dev3000
Docusaurusdocusaurus start3000
Grafanagrafana server3000
Metabasejava -jar metabase.jar3000
Vitevite5173
Angularng serve4200
Djangomanage.py runserver8000
Flaskflask run5000

Greyed ports belong to the heretics. They have never known this pain.

The reckoning

It worked on :3000.

localhost:3000

Everything passes.

Environment variables loose. CORS off. Mock data pristine. Auth stubbed to always return true. The AI wrote it, you approved it, the page rendered.

your-app.vercel.app

Nothing passes.

Missing env var. Blocked by CORS. Build succeeded, runtime did not. Three hundred lines of logs and one of them matters.

The gap between those two panels is the whole discipline. Port 3000 is where the optimism lives. Production is where it gets audited.

Broadcast

Make your own. Post it. Someone will feel seen.

Name the project you were about to run and the port it stole. The card renders live at social dimensions.

Right click the card to save it, or copy it straight to your clipboard.

About the coin

There is no contract address.

$EADDR

If someone hands you a contract address for this and calls it official, they are lying to you. Nothing has launched. Nothing is deployed. No presale, no whitelist, no allocation, and no admin sliding into your DMs asking you to connect a wallet to verify.

contract: 0x0000000000000000000000000000000000000000 supply: undefined status: EADDRINUSE

This page is a joke about an error message. Treat any token claiming otherwise as hostile until proven otherwise, which is how you should treat all of them.