3000端口无法使用

分类: 系统
日期: 2022-08-23
浏览: 250

不二又遇到奇怪的事情啦!在命令行中熟练的敲下脚手架命令后,潇洒的按下回车键,小嘬了一口茶,一切都是那么的丝滑。项目初始化完成后,又是两条熟悉的命令飞快的敲下,回车。屏幕上显示出了那条再熟悉不过的链接:localhost:3000。脸上漏出了满意的微笑。

点开链接,麻痹的,这是啥?怎么就无法访问了?

虽然我平时都是在WSL下开发,按照微软写bug尿性,WSL出现各种奇怪的问题也不足为奇,但是讲道理,你要不行就都不行啊,为啥Vite就没问题呢?哦,对了,Vite的默认端口是5173。难道是3000端口被占用了?命令探究之。

lsof -i:3000

呵,啥都没有。转念又想难道是Windows下某个程序占用了3000端口?又在PowerShell中执行了下面的命令。

netstat -aon|findstr "3000"

同样啥都没有!慌了,端口没被占用,程序能够起来,就是无法访问,怪,真怪!退出WSL,在Windows下又初始化了一份项目,启动,等等,这是啥提示?

3000端口已被占用,是否切换到别的端口?

不是查过3000端口占用情况吗?没有被占用啊!怎么到你这儿就被占用了呢?先同意吧,咋?换的端口还不是3001,这是什么情况?Google吧,在 https://github.com/docker/for-win/issues/3171 找到了原因。

因为我电脑上启用了沙盒功能(启用Hyper-V也会遇到这个问题),Windows保留了一些端口留着备用,处于备用的端口是无法被其他程序使用的,每次开机,系统都会随机保留一些端口。使用下面命令可以查看端口保留情况。

netsh interface ipv4 show excludedportrange protocol=tcp

解决方法有如下几种:

  1. 禁用Hyper-V和沙盒。
  2. 禁用Hyper-V和沙盒,添加需要排除的端口范围,重启Hyper-V和沙盒。
  3. 多次重启,直到需要的端口没被保留(如果不嫌累的话)。

对了,排除端口范围的命令还没说呢。

# startport:开始端口
# numberofports:端口数
netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1

微软,干得漂亮!

版权声明
作者:不二
来源:不二博客
文章版权归作者所有,未经允许请勿转载。
共有 2 条评论
刘萌

看到你对PHP这么专业,可以留个联系方式,聊一下的。

2022-09-28 13:19:08 回复
不二 回复 刘萌

感谢夸奖😊这是我的邮箱ztlcoder@163.com,微信号我邮箱发你吧。

2022-09-29 11:55:29 回复
发表评论