首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MetaMask - RPC错误:错误: MetaMask Tx签名:用户拒绝事务签名

MetaMask - RPC错误:错误: MetaMask Tx签名:用户拒绝事务签名
EN

Stack Overflow用户
提问于 2018-05-31 18:16:26
回答 2查看 5.6K关注 0票数 12

在javascript中,我运行contract的方法

代码语言:javascript
复制
contract[methodName](...params, { from: myAccount }, (err, response) => {
    console.log('get transaction', methodName, err, response);
    if (err) return reject(err);
    resolve(response);
});

然后通过MetaMask拒绝交易。在控制台中得到一个错误

代码语言:javascript
复制
MetaMask - RPC Error: Error: MetaMask Tx Signature: User denied transaction signature.

但是我在代码中找不到这个错误。回调不起作用。

如何在JS中捕获此错误?

EN

回答 2

Stack Overflow用户

发布于 2021-11-12 09:16:24

如果您正在使用Ethers库,请执行此操作:

代码语言:javascript
复制
contract.methodName(...params, { from: myAccount })
.then(tx => {
    //do whatever you want with tx
})
.catch(e => {
     if (e.code === 4001){
         //user rejected the transaction
     } 
});
票数 0
EN

Stack Overflow用户

发布于 2019-11-02 02:02:29

下面的代码示例在Chrome (v78.0)和Firefox (v70.0)中使用Metamask插件在macOS上进行了测试,并在事务被用户拒绝的情况下给出了预期的错误消息:

代码语言:javascript
复制
  createContract: function () {

        let myContract = new web3.eth.Contract(ABI, CONTRACT_ADDRESS, {
            from: account,
            gasLimit: web3.utils.toHex(7900000),
            gasPrice: web3.utils.toHex(1000000000)
        });
        myContract.methods.myMethodName().send().on("receipt", (receipt) => {

            // Transaction succeeded
            myContract.getPastEvents(
                "myEventName", {
                    fromBlock: receipt.blockNumber,
                    toBlock: receipt.blockNumber
                }, (errors, events) => {
                    for (let event in events) {
                        let returnValues = events[event].returnValues;
                        // Now do something with the event
                    }
                });

        }).catch(function (e) {
            // Transaction rejected or failed
            console.log(e);
        });
    }

在火狐控制台中的结果将如预期的那样为(参见最后一行app.js:218):

在Chrome控制台中的结果将如预期的那样为(参见最后一行app.js:218):

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50621923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档