当我像这样调用函数时:
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 打印的实际错误(包括数据中的对象)?
在 (ts) 中从 web3js 导入 ResponseError 并调用 .data 或 .code ,如下所示:
if (e instanceof ResponseError) {
console.log(e.data.message);
console.log(e.code)
}