WalletConnect设置infuraId为undefined时报错的无Infura账号解决方案
问题原因
你遇到的报错是WalletConnectProvider的默认逻辑导致的:哪怕你传入了自定义RPC配置,只要没有显式关闭默认节点 fallback 逻辑,它会优先尝试调用Infura的公共节点做初始化校验,你传了infuraId: undefined就会触发该报错。功能正常运行是因为请求Infura失败后,provider最终 fallback 到了你传入的自定义BSC RPC节点。
无需注册Infura的解决方案
你完全不需要注册Infura账号,只需要调整初始化配置即可消除报错:
- 把
infuraId设为null而非undefined,显式声明不使用Infura服务 - 新增
disableProviderFallbacks: true配置,禁止provider自动 fallback 到默认的第三方节点服务,强制仅使用你传入的RPC节点
修改后的代码如下:
const chainId = ContractService.getPreferredChainId(); const rpc = ContractService.getRpcAddress(); provider = new WalletConnectProvider({ infuraId: null, rpc: { [chainId]: rpc, }, disableProviderFallbacks: true }); await provider.enable();
如果调整配置后仍有报错,可检查你动态获取的RPC地址是否正确,以及是否覆盖了所有你可能用到的链ID(比如开发环境的97、生产环境的56),确保所有用到的链都有对应的有效RPC配置即可。
内容的提问来源于stack exchange,提问作者Thimma
相关产品推荐
相关产品推荐

