Easy-Vibe 开发实战:彻底搞懂端口(Port)与 localhost —— 从 `localhost:5173` 到 `EADDRINUSE` 与 CORS 排查
教程文档【免费下载链接】easy-vibe从 0 到 1 学会 vibe coding项目制学习项目地址https://gitcode.com/datawhalechina/easy-vibe点击查看免费下载每次运行npm run dev终端都会输出一行http://localhost:5173但你真的理解它吗localhost是什么5173代表什么为什么偶尔会冒出EADDRINUSE错误本文以 Datawhale 开源项目 easy-vibe 的《端口与 localhost 原理》章节为主体结合仓库中的真实示例项目配置一次性讲透端口、回环地址、端口冲突与跨域CORS这些每天都在用、却很少有人深究的开发环境基础概念。读完你不仅能看懂 dev server 的每一行输出还能独立定位并解决开发环境中 90% 的本地网络问题。0. 引言先拆解每天都会看到的localhost:5173每一位开发者的日常都离不开这样一行输出➜ Local: http://localhost:5173/这短短一行里其实压缩了三个关键概念http://→ 通信协议用什么语言对话localhost→ 目标地址去找谁:5173→ 端口号找到地址后敲哪扇门把这三件事弄明白开发环境里绝大多数网络问题都能迎刃而解。在 easy-vibe 仓库中运行npm run dev见 package.json 中dev: vitepress dev docs后VitePress 开发服务器同样会在终端打印出这类地址。理解它就是理解整个本地开发链路的第一步。前置建议如果你对 IP 地址与 HTTP 协议还不熟悉可以先阅读 计算机基础 - 计算机网络如果对终端命令不熟练可以先看 命令行与 Shell 脚本入门。1. 端口PortIP 是楼栋端口是房间号1.1 直观类比把一台服务器想象成一栋大楼IP 地址如192.168.1.100是楼栋的门牌地址——它告诉你去哪栋楼。端口号如:80是大楼里的房间号——它告诉你进哪个房间。一栋楼可以同时有餐厅80 号房、咖啡馆443 号房和办公室22 号房同理一台电脑可以同时运行 Web 服务器、数据库和 SSH 服务各自占用不同的端口。端口存在的意义就是让同一个 IP 地址上的多个服务互不干扰地并存。1.2 端口号的取值范围端口号是一个0 到 65535之间的整数共 65536 个被划分为三个区间区间取值范围用途示例系统端口Well-known Ports0 – 1023预留给标准协议普通用户不能随意使用80HTTP、443HTTPS、22SSH注册端口Registered Ports1024 – 49151预留给常见的注册应用3306MySQL、5432PostgreSQL、6379Redis动态端口Dynamic Ports49152 – 65535由操作系统临时分配浏览器发起请求时操作系统随机分配一个源端口1.3 为什么开发服务器偏爱 3000、5173、8080因为这些端口全部落在注册端口区间内监听它们不需要管理员权限而且很少与系统服务冲突。easy-vibe 仓库中的真实示例项目就是最好的证据——examples/trae-3d-block-game/vite.config.js 中显式配置了import { defineConfig } from vite export default defineConfig({ // ... server: { port: 5173, open: true } })运行该示例项目的dev:web脚本见 examples/trae-3d-block-game/package.json后Vite 会在5173端口启动开发服务器并自动打开浏览器——这正是原文档中http://localhost:5173的来源。这也解释了为什么你经常在教程里看到5173它是 Vite 的默认端口而3000、8080分别是旧版 React 脚手架和常见 Web 容器的默认偏好。2. localhost找到你自己2.1 核心概念回环Loopbacklocalhost是一个特殊的域名它永远指向你自己的电脑。当你在浏览器中输入http://localhost:3000时实际发生了以下五步浏览器向操作系统询问localhost对应的 IP 是什么操作系统直接回答127.0.0.1无需向 DNS 发起网络查询数据包被发送到127.0.0.1但实际上从未离开你的机器操作系统通过**回环接口loopback interface**把数据包原路弹回监听在 3000 端口的程序收到请求并返回响应。整个过程不经过任何网线、路由器也不需要互联网连接。这正是本地开发能够断网运行的根本原因dev server 与浏览器之间的通信全部发生在你这一台机器内部。2.2localhostvs127.0.0.1vs0.0.0.0这三个写法经常被混用但含义完全不同写法含义谁能访问localhost/127.0.0.1回环地址仅本机只有你自己的电脑0.0.0.0监听所有网络接口本机 局域网内其他设备192.168.x.x局域网 IP局域网内的设备实战场景# 只有你自己能访问安全适合日常开发 npm run dev -- --host localhost # 手机也能访问适合移动端调试 npm run dev -- --host 0.0.0.0很多框架如 Vite、Next.js默认只监听localhost所以即便手机和电脑连的是同一个 WiFi手机也访问不到你的 dev server。想用手机调试加一个--host参数即可。3. 端口冲突开发环境最常见的问题3.1 为什么会冲突一个端口在同一时刻只能被一个程序监听——就像一间房间只能住一户人家。如果你试图在同一个端口上启动第二个服务就会看到这个经典错误Error: listen EADDRINUSE :::3000翻译成人话就是3000 号房间已经被占了你进不去常见的冲突场景有三类之前的 dev server 没有正常关闭仍在后台运行两个不同的项目使用了相同的默认端口某个系统服务已经占用了你想要的端口。3.2 诊断与解决遇到端口冲突时排查流程非常固定。macOS / Linux# 第一步查看是谁占用了 3000 端口 lsof -i :3000 # 第二步拿到 PID 后强制结束该进程 kill -9 PIDWindows# 第一步查看是谁占用了 3000 端口 netstat -ano | findstr :3000 # 第二步结束该进程 taskkill /PID PID /F3.3 现代框架的智能换端口许多现代框架Vite、Create React App 等检测到端口冲突时会自动询问是否切换到其他端口。但理解底层原理能让你在框架帮不上忙的场景比如系统服务占用了端口、或需要固定端口对外联调时更快地自行解决。4. 同源策略与 CORS4.1 什么是源Origin浏览器有一套安全机制叫同源策略Same-Origin Policy只有当两个 URL 的协议、域名、端口完全一致时才被认为是同源。URL AURL B同源原因http://localhost:5173http://localhost:5173/about✅ 同源协议、域名、端口均相同http://localhost:5173http://localhost:3000❌ 跨源端口不同5173 vs 3000http://localhost:5173https://localhost:5173❌ 跨源协议不同http vs https注意第三行端口不同就足以构成跨源——这正是前后端分离开发中 CORS 问题频发的根源。4.2 前后端分离为何必然遇到 CORS当你的项目架构是前端 (Vite) → http://localhost:5173 后端 (Express) → http://localhost:3000前端页面从:5173加载然后用fetch(/api/users)请求:3000上的接口——端口不同跨域限制立刻被触发两种常见解决方案方案一在后端配置 CORS// Express 后端 app.use(cors({ origin: http://localhost:5173 }))方案二在前端配置代理推荐// vite.config.js export default { server: { proxy: { /api: http://localhost:3000 } } }代理的工作原理Vite 开发服务器替你转发请求。浏览器以为自己在和:5173同源通信实际上 Vite 在背后悄悄把请求转发到了:3000。这样既绕开了同源限制又不需要在后端逐个接口处理跨域白名单因此是社区推荐的主流做法。5. 实战排查三个最常见的问题场景结合前三章的知识下面三个高频问题可以按固定套路快速定位EADDRINUSE/ 端口被占用先用lsof -i :portmacOS/Linux或netstat -ano | findstr :portWindows确认占用者拿到 PID 后结束进程或者干脆换一个端口启动例如npm run dev -- --port 5174。手机访问不到本机 dev server先确认服务监听的是localhost还是0.0.0.0。默认监听 localhost 时手机必然访问不到改用--host 0.0.0.0后再用192.168.x.x局域网地址在手机浏览器中访问注意防火墙是否放行。接口请求报 CORS 错误检查前后端端口是否一致。端口不同即视为跨源按第 4 章的两个方案处理后端加cors中间件或前端配置server.proxy代理。6. 术语表英文术语中文对照解释Port端口0–65535 之间的编号用于区分同一台机器上的不同网络服务。每个服务监听一个端口等待客户端连接。localhost本地主机永远指向本机127.0.0.1的特殊域名用于无互联网地访问本机服务。Loopback Interface回环接口操作系统中的虚拟网络接口。发往 127.0.0.1 的数据包不离开机器而是通过该接口原路返回。EADDRINUSE地址已被使用Node.js / 操作系统报错表示你想监听的端口已被其他程序占用。CORS跨域资源共享浏览器安全机制。当前端页面请求跨源协议/域名/端口不同接口时后端必须显式授权。Same-Origin Policy同源策略浏览器安全基石仅允许协议、域名、端口完全相同的请求自由通信阻止跨源读取数据。Proxy代理开发环境中代理服务器代替浏览器把请求转发给后端绕过浏览器的同源限制。0.0.0.0所有接口服务监听 0.0.0.0 时接受来自任何网络接口本机、局域网等的连接。Well-known Ports知名端口0–1023 端口的统称预留给 HTTP80、HTTPS443、SSH22等标准协议。PID进程 ID操作系统为每个运行中程序分配的唯一编号用于管理和终止进程。lsof列出打开的文件macOS/Linux 命令用于查看哪个进程占用了指定端口lsof -i :端口号。HMR热模块替换dev server 的特性修改代码后浏览器自动更新无需手动刷新。底层通过 WebSocket 通知实现。7. 小结端口与 localhost 是开发环境中最基础、出现频率最高的概念记住以下四句话就能快速定位开发环境中大多数网络问题端口 区分同一台机器上不同服务的房间号0–65535localhost 找到自己的特殊地址127.0.0.1数据不会离开本机端口冲突的本质 一间房只能挂一块招牌用lsof/netstat找到占用进程并结束它CORS的本质 端口不同即跨源用后端 CORS 配置或前端代理proxy解决。在 easy-vibe 的实战学习中无论是用 AI 生成前端页面、搭建后端 API还是把项目部署上线你都会反复与端口、localhost、CORS 打交道。这一章的概念不依赖任何框架版本是跨工具、跨语言、长期有效的底层知识——值得花半小时彻底吃透。赞分享教程文档【免费下载链接】easy-vibe从 0 到 1 学会 vibe coding项目制学习项目地址https://gitcode.com/datawhalechina/easy-vibe点击查看免费下载相关推荐Easy-Vibe 开发环境网络基础端口、localhost 与 CORS 实战解析Easy Vibe 开发环境网络基础端口、localhost 与 CORS 实战解析 导读当你运行 npm run dev 终端输出 http://loc教程文档人工智能Vibe CodingEasy-Vibe 开发环境网络基石深入理解端口Port与 localhostEasy Vibe 开发环境网络基石深入理解端口Port与 localhost 本文基于 Easy Vibe https://link.gitcode.c教程文档人工智能Vibe Coding终极指南如何为Windows 10/11系统免费添加无限虚拟显示器终极指南如何为Windows 10/11系统免费添加无限虚拟显示器 你是否曾经因为物理显示器数量不足而限制了工作效率或者想在流媒体直播、虚拟现实应用中拥有更教程文档人工智能Vibe Coding创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Atlas 300V 24G是运算加速卡吗?YOLO部署实战与避坑指南

Atlas 300V 24G是运算加速卡吗?YOLO部署实战与避坑指南

1. 从“atlas”这个关键词说起:它到底指什么第一次看到“atlas”这个词,很多人脑子里蹦出来的可能是地图册,或者希腊神话里扛着地球的泰坦神。但在技术圈里,尤其是最近热搜上挂着“atlas部署yolo”和“atlas 300v 24g 是运算加速卡…

2026/9/23 0:19:46 阅读更多 →
aclnnThresholdBackward:CANN ops-nn 中 Threshold 反向传播算子的两段式接口与源码级解析

aclnnThresholdBackward:CANN ops-nn 中 Threshold 反向传播算子的两段式接口与源码级解析

人工智能算子库深度学习CANNAscend 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 点击查看 免费下载 aclnnThresholdBackward 是 CANN ops-nn 开源算子库中 a…

2026/9/23 2:13:29 阅读更多 →
react-admin 布局三件套:`<Box>`、`<Stack>` 与 `<Grid>` 完全指南

react-admin 布局三件套:`<Box>`、`<Stack>` 与 `<Grid>` 完全指南

前端UI组件 【免费下载链接】react-admin A frontend Framework for single-page applications on top of REST/GraphQL APIs, using TypeScript, React and Material Design 项目地址: https://gitcode.com/gh_mirrors/re/react-admin 点击查看 免费下载 react-ad…

2026/9/23 12:04:58 阅读更多 →

最新新闻

Erlang/OTP 记录(Records)实战指南:定义、创建、访问与编译期元组展开原理

Erlang/OTP 记录(Records)实战指南:定义、创建、访问与编译期元组展开原理

编程语言语言运行时标准库编译器并发编程 【免费下载链接】otp Erlang/OTP 项目地址: https://gitcode.com/gh_mirrors/ot/otp 点击查看 免费下载 Records 是 Erlang/OTP 中用于存储固定数量元素的命名数据结构,其作用与 C 语言中的 struct 类似&#x…

2026/9/25 4:47:41 阅读更多 →
Delphi连接InterBase/Firebird的IBDAC v9.0.0实战与避坑指南

Delphi连接InterBase/Firebird的IBDAC v9.0.0实战与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:47:41 阅读更多 →
Xonsh 编辑器集成完全指南:Sublime Text、VS Code、JetBrains、Emacs、Vim 与内置代码格式化

Xonsh 编辑器集成完全指南:Sublime Text、VS Code、JetBrains、Emacs、Vim 与内置代码格式化

开发工具 【免费下载链接】xonsh 🐚 Python-powered shell. Full-featured, cross-platform and AI-friendly. 项目地址: https://gitcode.com/gh_mirrors/xo/xonsh 点击查看 免费下载 本指南以 docs/editors.rst 为核心,系统梳理 xonsh&…

2026/9/25 4:47:41 阅读更多 →
ESPnet 实战:基于 BEATs 编码器在 ESC-50 上训练音频分类任务的完整 Recipe 解析

ESPnet 实战:基于 BEATs 编码器在 ESC-50 上训练音频分类任务的完整 Recipe 解析

人工智能语音音频深度学习NLP 【免费下载链接】espnet End-to-End Speech Processing Toolkit 项目地址: https://gitcode.com/gh_mirrors/es/espnet 点击查看 免费下载 导读 本文以 egs2/esc50/asr1/README.md 为核心骨架,系统讲解如何在 ESPnet 中以…

2026/9/25 4:47:41 阅读更多 →
Win10下com0com虚拟串口安装教程:驱动签名冲突的完整解决方案

Win10下com0com虚拟串口安装教程:驱动签名冲突的完整解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:47:40 阅读更多 →
华为EC6108V9A刷机指南:RK3128通用固件全网通去广告

华为EC6108V9A刷机指南:RK3128通用固件全网通去广告

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:46:40 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →