捕获交易拒绝 - moralis
Catch transaction rejection- moralis
您好,我正在使用 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:
您需要稍微编辑一下代码:添加 catch
和 then
。这是一个例子:
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));
}
您好,我正在使用 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:
您需要稍微编辑一下代码:添加 catch
和 then
。这是一个例子:
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));
}