MetaMask - RPC 错误:权限请求已挂起,在 Angular 10 中

Ahm*_*han 6 javascript angular metamask angular10

我已将 MetaMask 与 Angular 集成,在从代码中打开 MetaMask 扩展时出现此错误。

以下是我打开扩展的代码。我在单击打开 MetaMask 时调用此函数,它给出了该错误

MetaMask - RPC 错误:权限请求已挂起;请稍等。{code:-32002, message:“权限请求已待处理;请稍候。”}

ethEnabled(template?): any
  {
    if ((window as any).web3)
    {
      (window as any).web3 = new Web3((window as any).web3.currentProvider);
      (window as any).ethereum.enable();
      console.log((window as any).ethereum.enable());

    }
    else
    {
      this.modalRef = this.modalService.show(template);
    }
  }

Run Code Online (Sandbox Code Playgroud)

Ala*_*tas 12

这个错误实际上是预料之中的;当您已经提交了权限请求,但用户尚未登录 MetaMask 或未授予您的应用程序权限时,就会发生这种情况。

如果用户登录 MetaMask 并接受权限请求,则不会再出现此错误。

这在文档中进行了解释,它说You should always disable the "connect" button while the connection request is pending(否则会发生此错误)。

这是处理这个问题的一种方法:

  • 请求待处理时禁用按钮
  • 如果用户在一定的等待时间(也许是 10-20 秒?)后仍未连接,则在按钮下显示一条消息,请求用户完成 MetaMask 连接。

他们的文档中有更多信息和一个很好的示例。