乙醚-错误-parser
简单解析 Ethers.js 错误
要点
- 零依赖性
- 轻量级
- 简单使用QQ
- 进行中的工作
为什么
以太尔语.js 以加密错误消息而出名。 当交易失败时, 您会收到一个错误消息, 将纯文本和 JSON 字符串合并在一起 :
Error: cannot estimate gas; transaction may fail or may require manual gas limit (error={"code":-32603,"message":"execution reverted: Code has already claimed","data":{"originalError":{"code":3,"data":"0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000018436f64652068617320616c726561647920636c61696d65640000000000000000","message":"execution reverted: Code has already claimed"}}}, method="estimateGas", transaction={"from":"0xC16f5C62b29704F7aBECb27A3cb7E12a91383261","to":"0xb21FFFd62BD2f4aBd2a1dC34A2302Fda364977a0","data":"0xd2c34d3f0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000063132333435360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004153801a64156372ec7cd1d91868dd35ed68972dfa8b347c59db14bc49b753ed576fbe8a2bc00b6d0ba5dc8429c01748ae55e87dffa9547aafeb844aa40bb6c3e31b00000000000000000000000000000000000000000000000000000000000000","accessList":null}, code=UNPREDICTABLE_GAS_LIMIT, version=providers/5.5.1)
您的用户应该获得关于交易失败的惊人反馈 。 感谢 ethers-error-parser 你可以轻松地做到这一点.
进行中的工作
这一一揽子计划正在进行中。 虽然它尚未完成,许多以太错误可以更优雅地处理,但在生产中可以安全地使用. 有些见解比没有见解要好.
这套软件正被用于不同的生产项目,并且根据这些项目的需要不断演变。 如果您发现一些尚未处理或未提供大上下文的错误, 请打开一个问题或拉出请求 QQ
开始
- 安装软件包
yarn add @enzoferey/ethers-error-parser
- 用这个
import { getParsedEthersError } from "@enzoferey/ethers-error-parser";
try {
const transaction = await someContract.someMethod();
await transaction.wait();
} catch (error) {
const parsedEthersError = getParsedEthersError(error);
// parsedError.errorCode - contains a well defined error code (see full list below)
// parsedError.context - contains a context based string providing additional information
// profit ! 💅🏻
}
返回值
使用时 getParsedEthersError 你将获得一个有名的物体 errorCode 属性和可选 context 带有额外信息的属性。 TypeScript 类型定义看起来像如下:
interface ReturnValue {
errorCode: string;
context?: string;
}
以下是返回对象的完整列表:
errorCode | context |
|---|---|
TRANSACTION_RAN_OUT_OF_GAS | 交易气体限为字符串. |
TRANSACTION_UNDERPRICED | undefined |
REJECTED_TRANSACTION | 交易被拒绝的原因. |
CALL_REVERTED | 呼唤复出的原因. |
EXECUTION_REVERTED | 交易恢复的原因. |
NONCE_TOO_LOW | 交易不作为字符串 . |
INSUFFICIENT_FUNDS_FOR_GAS | undefined |
MAX_PRIORITY_FEE_PER_GAS_HIGHER_THAN_MAX_FEE_PER_GAS | undefined |
MAX_FEE_PER_GAS_LESS_THAN_BLOCK_BASE_FEE | undefined |
UNKNOWN_ERROR | 如果有的话, 某些代码或错误描述 . undefined 否则. |
错误代码字符串可以通过 RETURN_VALUE_ERROR_CODES 恒定,包输出.
如果您发现一些尚未处理或未提供大上下文的错误, 请打开一个问题或拉出请求 QQ
类型脚本使用
如果您正在使用 TypeScript, 您可以在软件包的根部找到所需的类型 。 例如,在处理常见的尝试/抓取语句时,您需要投出错误来使用内部 EthersError 类型 :
import {
getParsedEthersError,
EthersError,
} from "@enzoferey/ethers-error-parser";
try {
const transaction = await someContract.someMethod();
await transaction.wait();
} catch (error) {
const parsedEthersError = getParsedEthersError(error as EthersError);
}