【问题标题】:Catch transaction rejection- moralis捕获交易拒绝-moralis
【发布时间】:2021-12-05 01:36:52
【问题描述】:

您好,我正在使用 1inch 插件与 Moralis 合作。我很难理解在哪里捕获交易拒绝错误。 IE 当我拒绝交易时,我想给一些信息。谢谢。

async function trySwap() {
      let address = Moralis.User.current().get("ethAddress");
      let amount = Number(fromAmount) * 10**fromTokenDecimals;
      if (tokenSymbol !== "ETH") {
        const allowance = await Moralis.Plugins.oneInch.hasAllowance({
          chain: "eth", // The blockchain you want to use (eth/bsc/polygon)
          fromTokenAddress: tokenAddress, // The token you want to swap
          fromAddress: address, // Your wallet address
          amount: amount,
        });
        if (!allowance) {
          await Moralis.Plugins.oneInch.approve({
            chain: "eth", // The blockchain you want to use (eth/bsc/polygon)
            tokenAddress: tokenAddress, // The token you want to swap
            fromAddress: address, // Your wallet address
          });
        }
      }
      try {
        await doSwap(address, amount);
        alert("Swap Complete");
      } catch (error) {
        console.log(error)
        alert('Insufficient ETH')
      }
    }
    
    function doSwap(userAddress, amount) {
      return Moralis.Plugins.oneInch.swap({
        chain: "eth", // The blockchain you want to use (eth/bsc/polygon)
        fromTokenAddress: tokenAddress, // The token you want to swap
        toTokenAddress: totokenAddress, // The token you want to receive
        amount: amount,
        fromAddress: userAddress, // Your wallet address
        slippage: 1,
      })
    }

这是错误

MetaMask - RPC Error: MetaMask Tx Signature: User denied transaction signature. 
Object { code: 4001, message: "MetaMask Tx Signature: User denied transaction signature." }
inpage.js:1:51499
Uncaught (in promise) 
Object { code: 4001, message: "MetaMask Tx Signature: User denied transaction signature.", stack:

【问题讨论】:

    标签: javascript reactjs metamask moralis


    【解决方案1】:

    您需要稍微编辑一下您的代码:添加catchthen。这是一个例子:

    async function trySwap(params) {
            const { fromToken, fromAmount, chain } = params;
            const amount = Moralis.Units.Token(fromAmount, fromToken.decimals).toString();
            if (fromToken.address !== "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") {
              await Moralis.Plugins.oneInch
                .hasAllowance({
                  chain, // The blockchain you want to use (eth/bsc/polygon)
                  fromTokenAddress: fromToken.address, // The token you want to swap
                  fromAddress: walletAddress, // Your wallet address
                  amount,
                })
                .then(async (allowance) => {
                  console.log(allowance);
                  if (!allowance) {
                    await Moralis.Plugins.oneInch.approve({
                      chain, // The blockchain you want to use (eth/bsc/polygon)
                      tokenAddress: fromToken.address, // The token you want to swap
                      fromAddress: walletAddress, // Your wallet address
                    });
                  }
                })
                .catch((e) => alert(e.message));
            }
    

    【讨论】:

    • 谢谢,这正是我所需要的!
    猜你喜欢
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 2014-09-03
    • 2015-06-21
    • 2014-02-10
    • 2016-01-18
    • 2020-12-12
    • 1970-01-01
    相关资源
    最近更新 更多