簡體   English   中英

Metamask 發送 RPC 錯誤,盡管它在 Javascript 中被捕獲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM