parceljs

Parcel: configured port 1234 could not be used


I need to run my ReactJS application on the port 1234 but when I run yarn dev, I get the following:

$ parcel src/index.html --port 1234

Server running at http://localhost:2493 - configured port 1234 could not be used.

√ Built in 11.45s.

It doesn't tell me why it can't run on port 1234, so I suspected that the port might be in use already. According to this answer, the following should tell me what process is using that port.

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

But that didn't help, it gave the following message:

Get-NetTCPConnection : No MSFT_NetTCPConnection objects found with property 'LocalPort' equal to '1234'. Verify the value of the property and retry.

Which I guess means there is no process bound to port 1234. But if that is the case, why can't I bind to that port?

My package.json is as follows:

{
    "name": "bejebeje.react",
    "version": "1.0.0",
    "description": "bejebeje's react-js frontend",
    "main": "index.js",
    "repository": "[email protected]:JwanKhalaf/Bejebeje.React.git",
    "author": "John",
    "license": "GPL-3.0",
    "dependencies": {
        "@fortawesome/fontawesome-svg-core": "^1.2.19",
        "@fortawesome/free-brands-svg-icons": "^5.9.0",
        "@fortawesome/free-solid-svg-icons": "^5.9.0",
        "@fortawesome/pro-light-svg-icons": "^5.9.0",
        "@fortawesome/pro-regular-svg-icons": "^5.9.0",
        "@fortawesome/pro-solid-svg-icons": "^5.9.0",
        "@fortawesome/react-fontawesome": "^0.1.4",
        "@reach/router": "^1.2.1",
        "oidc-client": "^1.8.2",
        "react": ">=16",
        "react-dom": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0",
        "react-icons": "^3.7.0",
        "styled-components": "^4.3.2"
    },
    "scripts": {
        "dev": "parcel src/index.html --port 1234",
        "build": "parcel build src/index.html"
    },
    "devDependencies": {
        "@fortawesome/fontawesome-pro": "^5.9.0",
        "axios": "^0.19.0",
        "parcel-bundler": "^1.12.3",
        "prettier": "^1.16.4",
        "sass": "^1.22.5"
    }
}

Solution

  • After creating a little C# web server that would attempt to bind to the port 1234 I still couldn't get it to work. It would try to bind, but would throw an exception saying:

    An attempt was made to access a socket in a way forbidden by its access permissions.

    Anyways, after much pain and research here is what finally worked:

    First, disable hyper-v (this will restart your PC, so ensure all work is saved). In PowerShell (as admin) run the following:

    dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
    

    When your PC has restarted, you need to reserve the port you want so hyper-v doesn't reserve it back, again via PowerShell as admin, run the following:

    netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1
    

    Now finally re-enable hyper-V (PC will restart again), again via PowerShell as admin:

    dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
    

    when your PC has finished and is back up, you should be able to bind to that port successfully.