permision denied on port 3000 on nodejs - node.js

when i run my nodejs project on port 3000, get following error:
Error: listen EACCES: permission denied :::3000
at Server.setupListenHandle [as _listen2] (node:net:1330:16)
at listenInCluster (node:net:1378:12)
at Server.listen (node:net:1465:7)
at Function.listen (F:\Projects\NodeJS\Nodejs start\Nodejs start\node_modules\express\lib\application.js:618:24)
at Object.<anonymous> (F:\Projects\NodeJS\Nodejs start\Nodejs start\app.js:34:5)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1357:8)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EACCES',
errno: -4092,
syscall: 'listen',
address: '::',
port: 3000
Not only on port 3000, but also on any port, the program does not run, and the mentioned error occur.
for solving this problem, i run net stop winnat on CMD, i get:
The Windows NAT Driver service is not started.
for start the winnat, i run net start winnat , i get
The Windows NAT Driver service was start successfully.
But the problem was not solved.Is there any other way but to restart the system?

When reading an environment variable, you should convert it to a number.
Try adding parseInt() to the variable:
const port = parseInt(process.env.PORT) || 3000;

You can try On Windows systems, restarting the service "Host Network
Service" may resolve the issue.
or try to restart your computer more than one time
or try open CMD under admin rights and run :
net stop winnat
net start winnat

Related

I am getting listen EADDRINUSE: address already in use with an ExpressJS application in Lando via Docker for Windows in WSL Ubuntu 20.04

I'm trying to start building an Express/Node/React application on Windows 10 using WSL2, Docker Desktop, and Lando (installed via WSL2) but I'm having issues getting the basic Express portion to run.
Based on Google searches it seems to be most likely Windows related. I don't have much experience developing on Windows and usually use a Linux distro or macOS.
OS: Windows 10
wsl: Ubuntu 20.04
Lando: 3.6.0
Docker Desktop: 4.5.0
Node: v16.14.0
npm: 8.5.0
Here is my /app/server/index.js:
const express = require('express');
const app = express();
app.listen('/', (req, res) => {
res.send({ foo: 'bar' });
});
app.listen(5000);
Here is my .lando.yml:
name: test
recipe: mean
config:
node: 16
build:
- npm install -g npm
# command: npm start
database: mongo:5.0
globals: []
# gulp-cli: latest
port: 80
ssl: false
proxy:
appserver:
- server.test.lndo.site:5000
When running:
lando node index.js
I get this error: listen EADDRINUSE: address already in use
node:events:498
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use /
at Server.setupListenHandle [as _listen2] (node:net:1313:21)
at listenInCluster (node:net:1378:12)
at Server.listen (node:net:1476:5)
at Function.listen (/app/server/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/app/server/index.js:4:5)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1357:8)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '/',
port: -1
}
Switching the path in app.listen() just results in the same error.

My node process doesn't end on my EC2 server

SO I made an EC-2 Server and I've installed node.js on it. Then, I connected it to port :3000. It was fine untill I noticed that the port was never closed. I had no idea it was still open and tried 'npm run start' multiple times. I just found out that it was alive so I got the PID through "lsof -i TCP:3000" and killed it using 'Kill -9 "PID#" and tried to run the port again. However, it gave me :
node:events:342
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (node:net:1306:16)
at listenInCluster (node:net:1354:12)
at Server.listen (node:net:1441:7)
at Function.listen (/home/ec2-user/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/ec2-user/index.js:12:5)
at Module._compile (node:internal/modules/cjs/loader:1109:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1333:8)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '::',
port: 3000
}
So I searched if the port was open again, and it was still open with a different PID. I tried killing it over and over, but it kept showing up with a differnt PID.
If there is something worng or unclear with my question please tell me, I jsut started fiddling with EC2 and all this server things, so I don't know which informations are further required to solve this.
I solved it!!! I typed
killall5 -9
and killed everything and it stopped!

error that wont go away despite numerous changes in node.js

Good evening,
I have the following error and I have no idea what it means, i have googled and changed a few little bit but its very persistent. Is anyone able to offer me some help with the matter?
events.js:292
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::5000
at Server.setupListenHandle [as _listen2] (net.js:1318:16)
at listenInCluster (net.js:1366:12)
at Server.listen (net.js:1452:7)
at Object.<anonymous> (/Users/danielwilstrop/Desktop/projects/live-chat-2/server.js:100:8)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
Emitted 'error' event on Server instance at:
at emitErrorNT (net.js:1345:8)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
code: 'EADDRINUSE',
errno: -48,
syscall: 'listen',
address: '::',
port: 5000
}
[nodemon] app crashed - waiting for file changes before starting...
This error is usually caused by a typo on your terminal.
Check if you typed the correct file name in your terminal and also check if the path to your file is correct.
Option 2: check if no other terminals are open in the background. kill all those other terminals, press Ctr+C then run your app again..
There is some other process already using port 5000 so, you are getting this error. To solve this there are two ways
Change the server port from 5000 to something else which port is available eg. 5555 in this file /Users/danielwilstrop/Desktop/projects/live-chat-2/server.js at line number 100 (as shown in the error)
Kill the process that is running on port 5000. Then run the server.js file.
For Linux or mac sudo lsof -ti tcp:5000 | sudo xargs kill
For windows run cmd with administrator privilages netstat -ano|findstr "PID :5000" take the process id from the output and then taskkill /pid <PROCESS_PID_USING_PORT_5000> /f

Listening to Port 1880 fails on Windows

I am not able to start a server listening to port 1880. I tried this simple code in Node.js:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World!');
res.end();
}).listen(1880);
Which gives me the following error:
Error: listen EACCES: permission denied 0.0.0.0:1880
[90m at Server.setupListenHandle [as _listen2] (net.js:1283:19)[39m
[90m at listenInCluster (net.js:1348:12)[39m
[90m at Server.listen (net.js:1436:7)[39m
at Object.<anonymous> (C:\Users\mmueller\Desktop\test\test.js:6:4)
[90m at Module._compile (internal/modules/cjs/loader.js:956:30)[39m
[90m at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)[39m
[90m at Module.load (internal/modules/cjs/loader.js:812:32)[39m
[90m at Function.Module._load (internal/modules/cjs/loader.js:724:14)[39m
[90m at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)[39m
[90m at internal/main/run_main_module.js:17:11[39m
Emitted 'error' event on Server instance at:
[90m at emitErrorNT (net.js:1327:8)[39m
[90m at processTicksAndRejections (internal/process/task_queues.js:80:21)[39m {
code: [32m'EACCES'[39m,
errno: [32m'EACCES'[39m,
syscall: [32m'listen'[39m,
address: [32m'0.0.0.0'[39m,
port: [33m1880[39m
}
What I tried:
Checked if there is another program listening on this port (which is
not the case)
Executed command in admin console
Disabled windows firewall
Disabled Kaspersky tools
Still no success.
With port 1881 it also doesn't work. So some port-range has no access.
But with e.g. port 18800 it works.
What else can I do to figure out why I don't have access to listen to port 1880? What else could be blocking this port access if not firewall or anti virus software?
I have found the issue: Hyper-V was reserving some ports on windows.
netsh int ip show excludedportrange protocol=tcp

Error: listen EADDRINUSE: address already in use :::8080 while clicking on run script

Firstly I run this command (npm ndb server.js) then a debugging chrome window appear and after this
Actually, I got these error when I am trying to debug in my code and I clicked on run script after that a debugging chrome window appear then it give these wired error.
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::8080
at Server.setupListenHandle [as _listen2] (net.js:1279:14)
at listenInCluster (net.js:1327:12)
at Server.listen (net.js:1414:7)
at Function.listen (C:\Users\Abhishek kumar\natours\node_modules\express\lib\application.js:618:24)
at Object.<anonymous> (C:\Users\Abhishek kumar\natours\server.js:24:5)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1306:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
The error is quite explicit :
Error: listen EADDRINUSE: address already in use :::8080
means that some program is already listening on port 8080 (and you have an extra hint : the ::: says that it's listening on broadcast host using IPv6).
If you're curious what program is listening on that port, you could try to navigate to http://localhost:8080 and see what's displayed. If nothing is displayed then it's not one of your web apps. Maybe you have an HTTP proxy running on your machine (I have recently come across a malware that ran mitmproxy on target machines on port 8080 to intercept all traffic).
On Mac or Linux you can use lsof to get more information on the program listening on that port.
The command you want is :
$ sudo lsof -i :8080
Run this command.
killall node

Resources