【发布时间】: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