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

本地Unleash客户端连接失败排查:TypeScript项目无法连Docker实例

排查Unleash Client连接Docker部署实例的ECONNREFUSED问题

核心原因分析

你遇到的问题大概率是网络寻址不一致:浏览器/Postman跑在宿主机,能正确解析localhost到你的电脑,但你的Node.js代码如果是在Docker容器内运行,localhost指向的是容器自身,而非宿主机的Unleash实例。

分场景解决

场景1:Node.js项目运行在Docker容器中

  • 方案A:使用宿主机局域网IP替换localhost
    把代码中的url改成你宿主机的局域网IP(比如http://192.168.3.10:4242/api/),可以通过ifconfig(Linux/macOS)或ipconfig(Windows)查看。
  • 方案B:使用Docker自定义网络(更推荐)
    1. 创建专属Docker网络:
      docker network create unleash-net
      
    2. 重启Unleash容器并加入该网络(替换成你的启动命令):
      docker run --network unleash-net --name unleash -p 4242:4242 unleashorg/unleash-server
      
    3. 启动你的Node.js容器时也加入同一个网络,然后修改代码中的url:
      const unleash = new Unleash({
        url: 'http://unleash:4242/api/', // 用Unleash容器名作为主机名
        appName: 'default',
        customHeaders: { Authorization: 'default:development.unleash-insecure-api-token' },
      });
      

场景2:Node.js项目运行在宿主机

  • 检查Unleash容器的端口映射:
    运行docker ps查看Unleash容器的PORTS列,确认是0.0.0.0:4242->4242/tcp(允许所有IP访问),如果是127.0.0.1:4242->4242/tcp,且你是用WSL运行Node.js,需要替换成宿主机局域网IP(WSL的localhost和宿主机不互通)。
  • 临时关闭防火墙测试:
    虽然Postman能访问,但部分防火墙可能会区分进程权限,临时关闭系统防火墙后重试,排除拦截可能。

额外验证点

  • 确认API路径一致性:
    你的代码最终请求的是http://localhost:4242/api/client/features,和Postman测试的路径完全一致吗?可以直接把这个URL复制到Postman再测一遍。
  • 验证Token有效性:
    虽然你用的是官方默认开发Token,但可以登录Unleash后台,在Admin > API Access里确认这个Token是否存在且启用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:57:29