Windows环境Angular 6启动所有端口均提示被占用,求解决方案
解决Angular 6在Windows下所有端口均提示被占用的问题
针对你遇到的**无论指定哪个端口启动Angular项目都提示Port xxx is already in use**的诡异问题,我整理了几个经过验证的排查和解决方法,你可以按顺序尝试:
1. 彻底清理残留进程与缓存
有时候Angular CLI的进程会在后台静默残留(哪怕netstat查不到),或者npm缓存导致异常,按以下步骤操作:
- 打开任务管理器,找到所有
node.exe、ng.exe相关进程,全部结束 - 在项目根目录运行命令清理npm缓存:
npm cache clean --force - 删除项目根目录的
node_modules文件夹和package-lock.json文件 - 重新安装依赖:
npm install - 尝试用一个冷门端口启动,比如:
ng serve --port 5001
2. 检查并释放Windows预留端口
Windows系统会自动预留部分TCP端口,这些端口虽然netstat看不到占用,但无法被应用使用:
- 以管理员身份打开命令提示符,运行以下命令查看被系统排除的端口范围:
netsh int ipv4 show excludedportrange protocol=tcp - 如果你尝试的端口出现在列表中,执行以下命令释放预留端口:
net stop winnat net start winnat - 再次运行查看命令确认端口已被释放,然后重新尝试启动项目
3. 排查第三方安全工具拦截
关闭防火墙后仍有问题,可能是第三方杀毒软件、安全管家的网络保护功能在静默拦截:
- 暂时禁用杀毒软件的实时防护、网络监控功能
- 关闭所有后台运行的安全类工具
- 再次尝试启动Angular项目
4. 修改Angular CLI默认端口配置
可以直接在项目配置文件中指定端口,避免每次手动输入:
- 打开项目根目录的
angular.json文件 - 找到
projects -> [你的项目名称] -> architect -> serve -> options节点 - 添加
"port": 5001(替换成你想使用的端口),比如:"options": { "port": 5001, // 其他原有配置... } - 保存后直接运行
ng serve尝试启动
补充说明
从你的package.json配置来看,Angular 6的版本搭配是合理的,版本不匹配应该不是核心问题,重点还是放在进程残留、系统端口预留和第三方工具拦截上。
内容的提问来源于stack exchange,提问作者Anh Duc




