Ethereum 如何正确使用web3.js中的revert reason在UI中显示有意义的错误消息

Ethereum 如何正确使用web3.js中的revert reason在UI中显示有意义的错误消息,ethereum,web3js,decentralized-applications,Ethereum,Web3js,Decentralized Applications,我想使用web3.js向用户显示恢复原因,例如,在用户试图造币已经造币的erc721令牌的情况下。我正在使用try-catch块并查看错误消息,但我希望隔离错误消息以向用户显示有意义的原因。提前感谢。它在JS错误对象中作为数据返回。..reason 这是一个错误的坚固性代码 pragma solidity ^0.8.0; contract Test { function foo() public { revert('This is error message');

我想使用web3.js向用户显示恢复原因,例如,在用户试图造币已经造币的erc721令牌的情况下。我正在使用try-catch块并查看错误消息,但我希望隔离错误消息以向用户显示有意义的原因。提前感谢。

它在JS错误对象中作为
数据返回。..reason


这是一个错误的坚固性代码

pragma solidity ^0.8.0;

contract Test {
    function foo() public {
        revert('This is error message');
    }
}
因此,调用
foo()
函数的事务应该返回消息
这是错误消息

try {
    await myContract.methods.foo().send();
} catch (e) {
    const data = e.data;
    const txHash = Object.keys(data)[0]; // TODO improve
    const reason = data[txHash].reason;

    console.log(reason); // prints "This is error message"
}