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

尝试连接MetaMask时触发-32002错误,扩展弹窗但连接失败

解决MetaMask授权弹窗弹出但报错code -32002的问题

错误原因

你遇到的code: -32002是MetaMask的资源锁定错误,核心原因是重复发起了账户授权请求:你既直接调用了window.ethereum.request({method: "eth_requestAccounts"}),又使用了ethers v6的BrowserProvider——当你调用provider.getSigner()时,ethers会自动触发账户授权流程,两次请求冲突导致MetaMask返回该错误。

修正后的代码

移除直接调用window.ethereum.request的逻辑,改用ethers的API完成账户获取和授权:

try {
    if(!window.ethereum) return console.log("安装MetaMask")
    console.log("two...")

    // 用ethers的BrowserProvider处理授权,无需单独调用eth_requestAccounts
    const provider = new ethers.BrowserProvider(window.ethereum)
    // getSigner会自动触发MetaMask授权弹窗
    const signer = await provider.getSigner()
    // 获取授权后的账户地址
    const acct = await signer.getAddress()
    setAcct(acct)

    const contract = contractFetcher(signer) 

    const allHoldersID =  await contract.getUserId()
    const userAcctBal = await contract.balanceOf(acct)
    setUserID(allHoldersID)
    setAcctBalance(userAcctBal.toNumber())
    console.log(allHoldersID)
} catch (error) {
    console.log(error)
}

额外排查点

  • 检查页面连接按钮是否被重复绑定点击事件,导致多次触发授权请求
  • 关闭其他打开的MetaMask授权弹窗或同站点的其他标签页,避免资源冲突
  • 重置MetaMask与本地站点的连接:打开MetaMask -> 设置 -> 连接的站点 -> 找到localhost:3000 -> 移除后重新尝试连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:12:08