使用 web3js 出现错误时如何获取 MetaMask 错误对象

问题描述 投票:0回答:1

当我像这样调用函数时:

try {
  contract.methods[methodName]().estimateGas({from: account, value: x, gas: '5000000'})
  .catch((error) => {
    console.log(error);
  })
  return true;
} catch (e: any) {
    console.log(error);
}
MetaMask 的

inpage.js 会将其打印到控制台:

    inpage.js:1 MetaMask - RPC Error: Internal JSON-RPC error. 
{code: -32603, message: 'Internal JSON-RPC error.', data: {…}}
code
: 
-32603
data
: 
{code: -32000, message: 'err: insufficient funds for gas * price + value: a…3 want 1000000000000000000 (supplied gas 2510499)'}
message
: 
"Internal JSON-RPC error."
[[Prototype]]
: 
Object

但是我的 try catch 和 .catch 将打印:

page.tsx:314 ResponseError: Returned error: Internal JSON-RPC error.
    at Web3RequestManager.eval (webpack-internal:///(app-client)/./node_modules/web3-core/lib/esm/web3_request_manager.js:129:19)
    at Generator.next (<anonymous>)
    at fulfilled (webpack-internal:///(app-client)/./node_modules/web3-core/lib/esm/web3_request_manager.js:31:58)

如何获得 MetaMask 打印的实际错误(包括数据中的对象)?

web3js metamask
1个回答
0
投票

在 (ts) 中从 web3js 导入 ResponseError 并调用 .data 或 .code ,如下所示:

if (e instanceof ResponseError) {
  console.log(e.data.message);
  console.log(e.code)
}
© www.soinside.com 2019 - 2024. All rights reserved.