![](/img/trans.png)
[英]Metamask returns RPC Error: Error: [ethjs-rpc] rpc error with payload {“id”:5715960965837,“jsonrpc”:“2.0”,“params”:
[英]Metamask sends RPC Error although it is caught in Javascript
有誰知道為什么 Metamask(僅在這種情況下對我來說)在調試器控制台中返回 RPC 錯誤,而錯誤被 Javascript 代碼中的“try catch”語句正確捕獲?
雖然錯誤在 console.log(err) 中被捕獲,但 Metamask 在 web 控制台(Firefox 和 Chrome)中返回一個額外的 RPC 錯誤:(代碼 -32603)。
我使用 Metamask 版本:7.7.9(在 ubuntu 18.04 下,帶有 Truffle 5.1.9,節點 v13.7.0,npm 6.13.7,Ganache 2.4.0)
我重現錯誤的智能合約是:
pragma solidity >=0.6.0 <0.7.0;
contract userDataBase {
constructor() public {
}
function getOrderList(
uint8 _status
)
public
pure
returns (
address[] memory,
uint256[] memory
)
{
uint amount;
require(_status >= 0 && _status <= 6);
amount=0;
require(amount > 0, "State not includes orders");
address[] memory userAddr = new address[](amount);
uint256[] memory orderIDs = new uint256[](amount);
return(userAddr, orderIDs);
}
}
我的 Javascript 代碼段是:
try {
var list = await contract.methods.getOrderList(0).call({from: accountMM});
}catch (err) {
console.log(err);
}
該錯誤在 console.log(err) 中被正確捕獲,但 Metamask 提供了一個額外的錯誤:
MetaMask - RPC Error: [object Object]
{code: -32603, message: "[object Object]", data: {…}, stack: "Error: [object Object]↵ at a (chrome-extension:…eogaeaoehlefnkodbefgpgknn/background.js:1:1208518"}
code: -32603
data: {message: "VM Exception while processing transaction: revert State not includes orders", code: -32000, data: {…}}
message: "[object Object]"
stack: "Error: [object Object]↵ at a (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:1188007)↵ at Object.internal (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:1188293)↵ at f (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:1209307)↵ at chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:1208518"
__proto__: Object
您是否嘗試過重置 Metamask? Go 到帳戶 -> 設置 -> 高級 -> 重置帳戶。
這對我有用,因為在此之前我也遇到了同樣的問題,然后有人告訴我重置 Metamask。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.