# @enzoferey/ethers-error-parser 中文文档

规范地址：https://npmcn.com/package/%40enzoferey/ethers-error-parser/

版本：0\.2\.3
npm 元数据更新时间：2022-12-15T23:02:19.601Z
中文译文更新时间：2026-11-13T19:06:42.598Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40enzoferey/ethers-error-parser
原文对照：https://npmcn.com/package/%40enzoferey/ethers-error-parser/?lang=original
项目主页：https://github.com/enzoferey/ethers-error-parser
源码仓库：https://github.com/enzoferey/ethers-error-parser

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：20 kB，13 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：ethers ^5\.7\.0
- 首次发布：2022-07-23T23:21:03.832Z
- 最新版本发布：2022-12-15T23:02:19.514Z
- 近 30 天下载量：5923（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 0 个）

## 中文简介

![Tests](https://github.com/enzoferey/ethers-error-parser/actions/workflows/test.yml/badge.svg) [![npm version](https://badge.fury.io/js/@enzoferey%2Fethers-error-parser.svg)](https://badge.fury.io/js/@enzoferey%2Fethers-error-parser) \[! \[代码cov\] (https://

## 安装

```sh
npm install @enzoferey/ethers-error-parser
```

也可以使用：`pnpm add @enzoferey/ethers-error-parser`、`yarn add @enzoferey/ethers-error-parser`、`bun add @enzoferey/ethers-error-parser`

## README

# 乙醚-错误-parser

![Tests](https://github.com/enzoferey/ethers-error-parser/actions/workflows/test.yml/badge.svg) [![npm version](https://badge.fury.io/js/@enzoferey%2Fethers-error-parser.svg)](https://badge.fury.io/js/@enzoferey%2Fethers-error-parser) [![codecov](https://codecov.io/gh/enzoferey/ethers-error-parser/branch/main/graph/badge.svg?token=9amQLrkrar)](https://codecov.io/gh/enzoferey/ethers-error-parser) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@enzoferey/ethers-error-parser?color=g&label=gzip%20size)

简单解析 Ethers.js 错误

## 要点

-   零依赖性
-   轻量级
-   简单使用QQ
-   进行中的工作

## 为什么

[以太尔语.js](https://github.com/ethers-io/ethers.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

## 开始

1.  安装软件包

```sh
yarn add @enzoferey/ethers-error-parser
```

2.  用这个

```ts
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 类型定义看起来像如下:

```ts
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` 类型 :

```ts
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);
}
```

## 常见问题

### @enzoferey/ethers-error-parser 是什么？

\[\! \[代码cov\] \(https://

### 如何安装 @enzoferey/ethers-error-parser？

在项目目录运行 npm install @enzoferey/ethers-error-parser，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：ethers（^5\.7\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @enzoferey/ethers-error-parser 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @enzoferey/ethers-error-parser 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @enzoferey/ethers-error-parser 可以商用吗？

@enzoferey/ethers-error-parser 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @enzoferey/ethers-error-parser 的下载量有多少？

根据 npm 官方下载统计，@enzoferey/ethers-error-parser 在 2026/10/14 – 2026/11/12 这 30 天内被下载 5,923 次，日均约 197 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @enzoferey/ethers-error-parser 还在维护吗？

最新版本 0\.2\.3 发布于 2022/12/16（3 年前）；至今共发布 6 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/07/24。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

