Windows 下端口被占用问题排查与解决

清夏晚风 Lv7

问题描述

在 Windows 11 下使用 VSCode 启动 Vue 项目时,出现以下报错:

1
2
3
4
5
6
7
8
ERROR  error when starting dev server:
Error: listen EACCES: permission denied 0.0.0.0:5200
at Server.setupListenHandle [as _listen2] (node:net:1800:21)
at listenInCluster (node:net:1865:12)
at doListen (node:net:2014:7)
at process.processTicksAndRejections (node:internal/process/task_queues:83:21)

ELIFECYCLE Command failed with exit code 1

原因分析

在 Windows 中,某些端口范围可能被系统保留用于特定服务,例如动态端口分配给 Hyper-V 虚拟机Windows 更新服务或其他网络服务。

这个分配的行为是动态且随机的,所以会出现之前用的好好的端口,突然不可用的情况。

解决方案

方案一:指定可用端口临时启动

使用 vite 命令指定一个可用端口来启动:

1
vite --port 8080

方案二:查看被系统保留的端口范围

通过 netsh 命令查看 TCP 协议下被排除的端口范围:

1
netsh interface ipv4 show excludedportrange protocol=tcp

该命令会列出 TCP 协议下被系统保留、不能被使用的端口范围,了解哪些端口不可用后,就可以避开这些端口启动服务。

netsh(网络壳层)是 Windows 提供的一个脚本化命令行工具,用于本地或远程配置网络设备。这个命令在网络故障排除中非常有用,特别是遇到端口冲突问题时。

方案三:排除指定端口范围(推荐)

除了临时指定可用端口外,还可以将某个端口范围排除,使其不会被系统动态分配,一劳永逸地解决问题。

操作步骤:

  1. 以管理员身份打开命令提示符

  2. 查看当前的动态端口范围:

    1
    2
    netsh int ipv4 show dynamicport tcp
    netsh int ipv4 show dynamicport udp
  3. 设置新的动态端口范围,排除想保留的端口。

    • 一般 TCP 动态端口默认范围是 1024-15000
    • UDP 动态端口默认范围是 49152-65535
    • 例如要保留 5000-5100 范围,可以调整 TCP 动态端口范围为 35175-49151
    1
    netsh int ipv4 set dynamicport tcp start=35175 num=13977

    num 参数是端口数量,计算方式为 end_port - start_port + 1。确保新的范围覆盖了原来的范围,同时绕过了想保留的端口。

  4. 重新启动计算机以应用更改。

  • Title: Windows 下端口被占用问题排查与解决
  • Author: 清夏晚风
  • Created at : 2026-05-30 22:48:41
  • Updated at : 2026-07-19 01:57:11
  • Link: https://blog.yuil.cn/2026/05/30/Windows 下端口被占用问题排查与解决/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments