编辑
2024-12-30
前端
00
请注意,本文编写于 131 天前,最后修改于 131 天前,其中某些信息可能已经过时。

目录

问题描述
问题分析
解决步骤
1. 检查并清除代理配置
3. 清理缓存并重新构建项目
结果
经验总结

解决 Flutter 连接本地服务协议失败的问题


问题描述

在开发 Flutter 项目时,遇到了以下错误:

Error connecting to the service protocol: failed to connect to http://127.0.0.1:60928/N_QbyYL3NXA=/ HttpException: Connection closed before full header was received, uri = http://127.0.0.1:60928/N_QbyYL3NXA=/ws

该错误表明 Flutter 工具无法连接到本地服务协议,导致调试和运行失败。


问题分析

通过日志和排查,发现问题的可能原因包括:

  1. 代理配置问题:系统环境变量中配置了 HTTP_PROXYHTTPS_PROXY,导致 Flutter 工具尝试通过代理连接本地服务。
  2. 端口冲突:端口 60928 可能被其他进程占用。
  3. 应用程序崩溃:应用程序在启动过程中崩溃,导致服务协议无法正常启动。

解决步骤

1. 检查并清除代理配置
  • 使用 PowerShell 检查当前的环境变量:
    powershell
    Get-ChildItem Env: | Where-Object { $_.Name -match "PROXY" }
    输出显示 HTTP_PROXYHTTPS_PROXY 指向 http://127.0.0.1:7890
  • 清除代理配置:
    powershell
    [System.Environment]::SetEnvironmentVariable("HTTP_PROXY", "", [System.EnvironmentVariableTarget]::User) [System.Environment]::SetEnvironmentVariable("HTTPS_PROXY", "", [System.EnvironmentVariableTarget]::User)
  • 设置 NO_PROXY,确保本地请求不会被代理拦截:
    powershell
    [System.Environment]::SetEnvironmentVariable("NO_PROXY", "127.0.0.1,localhost", [System.EnvironmentVariableTarget]::User)
2. 重启开发工具和设备
  • 关闭并重新打开 VS Code 和 Android Studio。
  • 重启连接的设备(模拟器或物理设备)。
3. 清理缓存并重新构建项目
  • 运行以下命令清理缓存并重新构建项目:
    powershell
    flutter clean flutter pub get flutter run
4. 检查端口占用
  • 检查端口 60928 是否被其他进程占用:
    powershell
    netstat -ano | findstr :60928
  • 如果发现端口被占用,终止相关进程:
    powershell
    taskkill /PID <PID> /F
5. 验证本地服务
  • 确保本地服务正在运行,可以使用以下命令测试连接:
    powershell
    Invoke-WebRequest -Uri "http://127.0.0.1:60928"

结果

通过以上步骤,成功解决了 Flutter 连接本地服务协议失败的问题。项目可以正常启动和调试。


经验总结

  1. 代理配置:在开发过程中,代理配置可能会影响本地服务的连接。确保 NO_PROXY 包含 127.0.0.1localhost,并清除不必要的代理配置。
  2. 端口冲突:端口冲突是常见问题,定期检查端口占用情况可以避免类似问题。
  3. 缓存清理:在遇到问题时,清理缓存并重新构建项目是一个有效的解决方法。
  4. 日志分析:仔细阅读日志信息,可以帮助快速定位问题的根本原因。

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!