【问题标题】:Metamask sends RPC Error although it is caught in JavascriptMetamask 发送 RPC 错误,尽管它被 Javascript 捕获
【发布时间】:2020-05-21 19:43:26
【问题描述】:

有谁知道为什么 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

【问题讨论】:

    标签: javascript solidity metamask


    【解决方案1】:

    您是否尝试过重置您的 Metamask? 转到帐户 -> 设置 -> 高级 -> 重置帐户。

    这对我有用,因为我之前也遇到过同样的问题,然后有人告诉我重置 Metamask。

    【讨论】:

    • 嗨,本杰明,是的,我重置了 Metamask,例如当我重置 Ganache 时。仅当返回的数组为空时才会出现此问题。然后 Metamask 返回这个额外的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 2018-11-10
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多