如何解决Flutter Web单元测试SocketException: Failed host lookup: 'localhost' errno=11004错误
问题原因
该错误是Windows系统下DNS解析失败导致,Flutter Web端调试单元测试时默认请求localhost域名,但系统无法正确将该域名解析到本地回环地址,所以抛出错误码11004的异常。
解决方案
方案1:修改系统hosts文件(永久生效)
- 右键点击记事本图标,选择「以管理员身份运行」
- 点击左上角「文件」-「打开」,路径输入
C:\Windows\System32\drivers\etc\hosts,右下角文件类型切换为「所有文件」即可看到hosts文件 - 在文件末尾追加两行配置:
127.0.0.1 localhost ::1 localhost
- 保存文件后,打开CMD命令行执行
ipconfig /flushdns刷新系统DNS缓存 - 重新运行Flutter单元测试即可
方案2:指定调试IP(临时验证用)
如果不想修改系统配置,运行测试时直接指定本地回环IP替代localhost即可:
- 运行测试时添加参数:
flutter test --platform chrome --web-hostname 127.0.0.1
方案3:排查网络代理配置
- 打开Windows「设置」-「网络和Internet」-「代理」
- 确认「自动检测设置」为开启状态,且没有手动配置的代理规则将localhost指向无效地址
- 如果正在运行VPN、全局代理工具,暂时关闭后重试测试
验证方法
修改完成后先在CMD执行ping localhost,如果能正常返回127.0.0.1的响应,说明域名解析已经恢复正常,再运行Flutter测试就不会触发该错误。
内容的提问来源于stack exchange,提问作者ArkOne
相关产品推荐
相关产品推荐

