Error: listen EADDRINUSE: address already in use :::5000 in Node
Hi you guys. I am a beginner in Nodejs and today I tried to create a small app, I want to call an API and display all data as a table in the browser.
My server.js file
import fetch from "node-fetch";
import express from "express";
var app = express();
app.get('/', async (req, res) => {
const result = await getUser();
console.log(result);
});
var server = app.listen(5000, function () {
console.log('Server is running..');
});
async function getUser() {
try {
const response = await fetch('https://randomuser.me/api/');
if (!response.ok) {
throw new Error(`Error! status: ${response.status}`);
}
const result = await response.json();
return result;
} catch (err) {
console.log(err);
}
}
I run the app by using the command node server.js
but I got an exception throw Error: listen EADDRINUSE: address already in use :::5000. You can see detail here:
C:\Users\conta\source\repos\NodeJs\Demo1>node server.js
node:events:505
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::5000
at Server.setupListenHandle [as _listen2] (node:net:1372:16)
at listenInCluster (node:net:1420:12)
at Server.listen (node:net:1508:7)
at Function.listen (C:\Users\conta\source\repos\NodeJs\Demo1\node_modules\express\lib\application.js:635:24)
at file:///C:/Users/conta/source/repos/NodeJs/Demo1/server.js:10:18
at ModuleJob.run (node:internal/modules/esm/module_job:198:25)
at async Promise.all (index 0)
at async ESMLoader.import (node:internal/modules/esm/loader:385:24)
at async loadESM (node:internal/process/esm_loader:88:5)
at async handleMainPromise (node:internal/modules/run_main:61:12)
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1399:8)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EADDRINUSE',
errno: -4091,
syscall: 'listen',
address: '::',
port: 5000
}
I am using Node version 16.15.1
Thank you for any suggestions.
-
E0
Elsen Askerov Jul 22 2022
The error: listen EADDRINUSE: address already in use :::5000 occurs because port 5000 is being used by another app.
Solution: You can change port 5000 to another port (ex: 5001).
Change
var server = app.listen(5000, function () { console.log('Server is running..'); });
To
var server = app.listen(5001, function () { console.log('Server is running..'); });
This is a fast solution to solve it.
-
K-5
Kase Jul 22 2022
You can kill port 5000 before using it. To kill port 5000 you can follow this:
First, you would want to know which process is using
port 5000
sudo lsof -i :5000
This will list all PID listening on this port, once you have the PID you can terminate it with the following:
kill -9 {PID}
And then you can rerun your app.
I hope this work for you.
* Type maximum 2000 characters.
* All comments have to wait approved before display.
* Please polite comment and respect questions and answers of others.