You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter调用Node.js API时出现Connection refused错误求助

Flutter调用Node.js API出现Connection refused错误的排查方案

E/flutter (15338): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Connection refused
E/flutter (15338): #0 IOClient.send (package:http/src/io_client.dart:88:7)
E/flutter (15338):
E/flutter (15338): #1 BaseClient._sendUnstreamed (package:http/src/base_client.dart:93:32)
E/flutter (15338):
E/flutter (15338): #2_withClient (package:http/http.dart:164:12)
E/flutter (15338): < asynchronous suspension>

  • 确认Node.js服务状态:
    先在本地终端执行curl http://localhost:你的API端口测试,验证服务是否正常响应。如果本地都无法访问,优先排查Node.js启动问题,比如端口被占用、代码语法错误、依赖缺失等。

  • 修正模拟器/真机的请求地址:

    • Android模拟器不能直接用localhost,需替换为10.0.2.2(模拟器映射电脑本地的专属地址)
    • iOS模拟器可直接使用localhost或127.0.0.1
    • 真机测试时,必须使用电脑的局域网IP(如192.168.1.105),且手机与电脑处于同一WiFi网络下
  • 检查Node.js的监听配置:
    确保Node.js服务监听0.0.0.0而非127.0.0.1,否则外部设备无法访问。示例代码:

    const express = require('express');
    const app = express();
    
    app.listen(3000, '0.0.0.0', () => {
      console.log('Server running on http://0.0.0.0:3000');
    });
    
  • 排查防火墙拦截:
    检查电脑防火墙设置,确保Node.js使用的端口(如3000)允许入站连接。若使用第三方安全软件,需确认未拦截该端口的网络请求。

  • 配置Flutter端网络权限:

    • Android:在android/app/src/main/AndroidManifest.xml中添加网络权限:
      <uses-permission android:name="android.permission.INTERNET"/>
      
    • iOS:若使用HTTP请求,需在ios/Runner/Info.plist中添加ATS例外:
      <key>NSAppTransportSecurity</key>
      <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
      </dict>
      

内容的提问来源于stack exchange,提问作者Drip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:15:28