It was a bug I faced something like year ago, and I didn’t fixed that in the past. This time issue was exactly the same (though app was different).
The problem
ng serve
Port 4200 is already in use.
Use '--port' to specify a different port.
ok let’s check whether anything is blocking the port.
Let’s call netstat in cmd with admin rights:
netstat -ano | findstr 4200
there is no service using that port… strange.
I was close to surrender again, and change port of the app, but I started googling and meet this great article:
As it turned out there Windows makes port reservations in range 1025-65534. This is especially visible if you’re working in configuration: Win 10 + Hyper-V + Docker for Windows.
How to fix it?
Check whether your port is in excluded range by running:
netsh int ipv4 show excludedportrange tcp
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
4137 4367
9800 9800
9801 9801
49671 49770
61902 62001
if your port is in that range, best solution would be to :
1. Disable Hyper-V
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
2. Reserve the port for your app
netsh int ipv4 set dynamic tcp startport=4200 numberofports=1
3. Enable Hyper-V
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
Some people need to run also that command
reg add HKLM\SYSTEM\CurrentControlSet\Services\hns\State /v EnableExcludedPortRange /d 0 /f
as described in this github issue .
This is a great article. To the point.
Just to aid a little bit, please also look at this posted by microsoft. This says pretty much the same but with more elaborate way of what each of these steps mean, along with proper screenshots.
Here is the link:
https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/tcp-port-is-already-in-use/ba-p/371001
Thanks a lot for kind words and additional link, happy to help!