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

React Native连接MetaMask报错求助:使用react-native-walletconnect的useWalletConnect遇问题

React Native 连接 MetaMask 时 useWalletConnect 报错的解决方案

1. 先确认依赖版本兼容

  • react-native-walletconnect 对 React Native 版本有要求,RN 0.60+ 建议用最新稳定版,别碰 beta 包。
  • 执行 npm list react-native-walletconnect 查看当前版本,要是版本太老,直接更新到最新:npm install react-native-walletconnect@latest --save
  • 别忘了安装必填的弹窗依赖:npm install @walletconnect/react-native-qrcode-modal --save

2. 检查初始化配置是否正确

必须确保 WalletConnect 客户端初始化时参数完整,链信息要对应 MetaMask 的当前链:

import WalletConnect from 'react-native-walletconnect';
import QRCodeModal from '@walletconnect/react-native-qrcode-modal';

const connector = new WalletConnect({
  bridge: 'https://bridge.walletconnect.org', // 默认桥接地址,不要随意修改
  qrcodeModal: QRCodeModal,
});

// 未连接时创建会话
if (!connector.connected) {
  connector.createSession({
    chainId: 1, // 以太坊主网,测试网可使用3(Ropsten)、4(Rinkeby)
    rpcUrl: 'https://mainnet.infura.io/v3/你的INFURA密钥',
  });
}

3. useWalletConnect Hook 的正确用法

Hook 必须在 React 组件内部调用,且传入完整配置:

import { useWalletConnect } from 'react-native-walletconnect';
import QRCodeModal from '@walletconnect/react-native-qrcode-modal';

function WalletConnectBtn() {
  const { connector, connected, accounts, chainId } = useWalletConnect({
    bridge: 'https://bridge.walletconnect.org',
    qrcodeModal: QRCodeModal,
  });

  const connectWallet = async () => {
    if (!connected) {
      await connector.createSession({ chainId: 1 });
    }
  };

  const disconnectWallet = async () => {
    await connector.killSession();
  };

  return (
    // 你的UI代码,比如按钮触发连接/断开逻辑
  );
}

注意:别在组件外部调用 Hook,也不能漏传 bridge 或 qrcodeModal 配置

4. 常见报错的排查方向

  • "Cannot read property 'createSession' of undefined":大概率是 connector 实例没初始化好,检查 Hook 配置是否完整,不要在组件挂载前调用连接方法。
  • 二维码弹窗不显示:确认 @walletconnect/react-native-qrcode-modal 已安装;iOS 需在 Info.plist 中添加相机权限,Android 在 AndroidManifest.xml 中添加相机权限。
  • 连接后 accounts 为空:检查你配置的 chainId 和 MetaMask 当前选中的链是否一致,比如你配置了主网(1),但 MetaMask 切换到了测试网,就会同步失败。

5. 通用调试技巧

  • 打开 React Native 调试工具,查看控制台的具体错误栈,精准定位问题根源。
  • 删除 node_modules 和 package-lock.json,重新执行 npm install,再清除缓存重启项目:npx react-native start --reset-cache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:50:26