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

WalletConnect Deeplink在fly.io生产环境连接失败,本地正常

WalletConnect部署到fly.io后无法连接钱包的解决方案

你遇到的问题是:本地开发时WalletConnect能正常连接MetaMask、Trust Wallet,但部署到fly.io后,生成的deeplink能打开钱包却无法建立连接,仅Trust Wallet提示“Failed to Connect”。以下是几个排查和解决方向:

  • 检查CORS配置
    fly.io部署的服务可能未正确配置跨域规则,导致WalletConnect与桥接服务器的请求被拦截。需要在NodeJS服务中配置CORS,允许来自https://bridge.walletconnect.org的请求,同时放行必要的请求头部。以Express框架为例:

    const cors = require('cors');
    app.use(cors({
      origin: ['https://bridge.walletconnect.org', 'https://你的fly.io应用域名'],
      credentials: true,
      allowedHeaders: ['Content-Type', 'Authorization']
    }));
    
  • 验证fly.io服务器的网络连通性
    可能fly.io服务器无法访问WalletConnect的桥接服务器。登录到fly.io应用虚拟机执行测试命令:

    fly ssh console -a 你的应用名称
    curl -v https://bridge.walletconnect.org
    

    如果返回连接失败或超时,需调整fly.io的网络配置,确保出站流量能访问该桥接地址。

  • 确认回调域名和元数据配置
    本地开发用的是localhost,部署后必须将WalletConnect元数据里的url替换为fly.io的正式域名,否则钱包无法识别合法回调地址。修改connector初始化代码:

    import WalletConnect from "@walletconnect/client";
    
    const connector = new WalletConnect({
      bridge: "https://bridge.walletconnect.org",
      metadata: {
        name: "你的应用名称",
        description: "应用描述",
        url: "https://你的fly.io应用域名",
        icons: ["https://你的应用图标地址"]
      }
    });
    
    if (!connector.connected) {
      connector.createSession();
    }
    
  • 检查WebSocket连接权限
    WalletConnect依赖WebSocket与桥接服务器通信,fly.io的防火墙或安全组可能阻止了wss协议的出站连接。在fly.io控制台检查应用网络策略,确保允许出站到wss://bridge.walletconnect.org的流量。

  • 锁定依赖版本
    确认本地和部署环境的@walletconnect/client版本一致,避免版本差异导致兼容性问题。确保部署时使用package-lock.json或yarn.lock锁定依赖版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:09:35