微信小程序开发问题类型:网络连接被拒绝(ERR_CONNECTION_REFUSED)

微信小程序与 Web 应用在网络访问方式上的差异说明

在开发过程中,我们经常会遇到这样一个现象:同样的后台接口,Web 浏览器可以正常访问,但微信小程序却无法调用,尤其是当后台部署在本地(localhost 或局域网 IP)时更为明显。这并不是接口本身的问题,而是 微信小程序与 Web(浏览器/Node.js)运行环境的本质差异 所导致的。

首先,微信小程序并不是浏览器,也不是 Node.js 服务器。它运行在微信客户端提供的 独立沙盒环境(JSCore) 中,没有完整的浏览器能力,也没有本机服务器环境。因此,小程序无法像浏览器一样直接访问电脑本地地址。例如 http://localhost:8080http://127.0.0.1,浏览器可以正常访问,是因为它运行在本地电脑上,可以找到本地服务器;而小程序运行在微信 App 内部,与本地环境隔离,自然无法连接 localhost。

其次,Web 浏览器和 Node.js 不存在这一限制。浏览器可以直接访问局域网 IP,例如 http://192.168.x.x:8080,Node.js 后端甚至可以直接连接本地数据库或服务。这些访问能力依赖于它们所处的宿主环境,而小程序没有本地宿主服务器。

为了安全性,微信小程序要求后台服务必须是 公网可访问的 HTTPS 地址,并且需要在小程序管理后台配置为“合法域名”。这意味着在正式环境下,小程序只能访问真正部署在公网的服务器。开发阶段,小程序开发工具可以通过勾选 “不校验合法域名” 临时访问局域网接口,如 http://192.168.x.x:8080(即使用局域网 IPv4 地址)。需要注意的是,这种方式仅限开发工具,真机在局域网内也无法访问。

总结来说:浏览器和 Node.js 可以访问 localhost 或局域网 IP,因为它们运行在本地;而微信小程序没有本地环境,因此无法访问 localhost,只能访问配置好的公网服务器。如果希望小程序在所有设备上都能正常联网,后台必须部署在公网服务器或使用微信云托管,以确保接口稳定可靠。

问题类型:网络连接被拒绝(ERR_CONNECTION_REFUSED)

这是网络层连接失败,不是代码逻辑问题。

问题原因

  1. IP 地址不匹配:错误日志显示 192.168.x.x,
  1. 连接被拒绝:TCP 连接在建立时被目标主机或网络设备拒绝。

解决方案

确认后端服务状态:

         确认服务是否在运行

netstat -ano | findstr 8080

在浏览器访问:http://192.168.100.100:8080/ip/test

        或使用 ping 192.168.100.100 测试

总结

在开发过程中,如果你的后台部署在本地局域网(如 http://192.168.100.200:8080),小程序在真机测试时可能无法访问(网络连接失败)。原因之一是:局域网 IP 可能会随着电脑重启或网络重新连接而改变

具体流程如下:

  1. 电脑重启后 IP 可能变化

    • Windows 默认是通过 DHCP 自动获取局域网 IP。

    • 每次重启或网络断开重连时,系统可能分配一个新的 IPv4 地址。

    • 原先在小程序中使用的 IP(例如 192.168.100.200)就会失效。

  2. 查看当前 IP

    • 可以按 Win + R → 输入 cmd → 在命令行输入:

      ipconfig

    • 找到对应的以太网适配器(如“以太网 3”)下的 IPv4 地址,例如 192.168.100.215

  3. 更新小程序请求地址

    • 将小程序中调用的接口地址更新为当前的 IPv4,例如:

      const baseUrl = "http://192.168.100.215:8080";

    • 在开发工具中,小程序就能正确访问你的局域网服务器。

小结

  • 浏览器可以直接访问 localhost 或局域网 IP,因为它在本地运行。

  • 微信小程序真机不能访问 localhost,只能访问公网或局域网 IP。

  • 局域网 IP 会变,所以每次电脑重启后需要确认当前 IPv4 并更新小程序。

小提示:如果希望小程序每次都能稳定访问本地服务,可以给电脑设置 固定局域网 IP,或者把后台部署到公网服务器/云环境,这样就无需每次修改 IP。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值