包裹:配置的端口1234无法使用

J86*_*J86 5 parceljs

我需要在端口上运行我的 ReactJS 应用程序,1234但是当我运行时yarn dev,我得到以下信息:

\n\n
\n

$ 包裹 src/index.html --端口 1234

\n\n

服务器运行在http://localhost:2493- 无法使用配置的端口 1234。

\n\n

\xe2\x88\x9a 内置 11.45s。

\n
\n\n

它没有告诉我为什么它不能在 port 上运行1234,所以我怀疑该端口可能已经在使用中。根据这个答案,下面应该告诉我哪个进程正在使用该端口。

\n\n
Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess\n
Run Code Online (Sandbox Code Playgroud)\n\n

但这并没有帮助,它给出了以下消息:

\n\n
\n

Get-NetTCPConnection:未找到属性“LocalPort”等于“1234”的 MSFT_NetTCPConnection 对象。验证该属性的值并重试。

\n
\n\n

我猜这意味着没有进程绑定到端口1234。但如果是这样的话,为什么我不能绑定到该端口?

\n\n

我的package.json的如下:

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

J86*_*J86 3

创建一个尝试绑定到端口的小型 C# Web 服务器后,1234我仍然无法让它工作。它会尝试绑定,但会抛出异常:

尝试以访问权限禁止的方式访问套接字。

无论如何,经过大量的痛苦和研究,这里终于奏效了:

首先,禁用 hyper-v(这将重新启动您的电脑,因此请确保保存所有工作)。在 PowerShell 中(以管理员身份)运行以下命令:

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
Run Code Online (Sandbox Code Playgroud)

当你的电脑重新启动后,你需要保留你想要的端口,这样 hyper-v 就不会保留它,再次通过 PowerShell 以管理员身份运行以下命令:

netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1
Run Code Online (Sandbox Code Playgroud)

现在最终重新启用 hyper-V(PC 将再次重新启动),再次以管理员身份通过 PowerShell:

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
Run Code Online (Sandbox Code Playgroud)

当您的电脑完成并备份后,您应该能够成功绑定到该端口。