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
相关产品推荐
相关产品推荐

