@easyweb/errors

中文文档
1.1.0发布于 2026/08/14MITTypeScriptESM + CJS零依赖近 30 天下载 3410

用于 Easyweb 微服务的共享 HTTP 错误分类: 带有机器可读代码的打出错误类, 以及将其序列化的快速错误处理中件

中文使用文档
文档目录8 节
  1. 安装
  2. 接线
  3. 响应形状
  4. 类
  5. 挑一个
  6. 处理者的行为
  7. isCustomError
  8. 出版

@easyweb/错误

用于 Easyweb 微服务的共享 HTTP 错误分类学: 有机器可读代码的打出错误类, 以及序列化的快递中件.

以前这些班都住在这里 @easyweb/authentication他们搬进来了 @easyweb/[email protected] ——错误处理是交叉的,是一项需要的服务 ConflictError 不应依赖JWT包来获得.

安装

npm install @easyweb/errors

express@^5 是一种同伴依赖,属于消费服务.

接线

在每个路由器之后, 上载全部和处理器 :

import { errorHandler, notFoundHandler } from "@easyweb/errors";
import logger from "./lib/logger";

app.use("/auth", authRouter);

app.all(/.*/, notFoundHandler);
app.use(errorHandler({ logger }));

通过服务皮诺的例子。 默认是 console,它工作但产生无结构的输出,没有服务名称,没有编辑,也没有请求id.

选项默认
loggerconsole任何东西 error 财务报告和审定财务报表 warn。 。 。 .
logClientErrorsfalse警告层的日志4xx 关闭因为客户错误不是事件.
includeRequestIdtrue包含 requestId 在体内.
fallbackMessage"Something went wrong"未识别错误的正文文本 .

响应形状

{
  "errors": [
    { "message": "Email is already registered", "field": "email", "code": "CONFLICT" }
  ],
  "requestId": "0f4d…"   // omitted when requestContext has not run
}

message 财务报告和审定财务报表 field 并保持不变. code 并且是客户唯一应该分行的.. message 自由式英语写在掷出地点, 部分已经是印度尼西亚语.

requestId 来自 req.requestId,设置 requestContext 内 @easyweb/authentication,与 x-request-id 响应头。 它被防御性地读取,所以这个软件包并不依赖于认证软件包.

类

状态类构造器
400个BadRequestError(message)
400个RequestValidationError(errors) ——接受 { field, message } 或者说 { msg, path }每个条目
401 (中文(简体) )NotAuthorizedError(message = "Not authorized")
403 (韩语)ForbiddenError(message = "Forbidden")
404 (韩语)NotFoundError() ——无路线路径
404 (韩语)ResourceNotFoundError(resource, id?) ——域对象
409个ConflictError(message, field?)
422个UnprocessableEntityError(message)
429个TooManyRequestsError(message?, retryAfterSeconds?)
500个InternalServerError(message = "Something went wrong")
500个DatabaseConnectionError()
502 (中文(简体) )BadGatewayError(message?)
第503条ServiceUnavailableError(message?, retryAfterSeconds?)
504 (中文(简体) )GatewayTimeoutError(message?)

retryAfterSeconds 变成一个 Retry-After 头曰.

挑一个

  • 401对403 ——401意为"我们不知道你是谁";403意为"我们知道,你可能不知道". 为角色失败而返回401会让客户端回合出现无法成功的再校正循环.
  • 400对409 -400人说请求有问题 如果请求是罚款和 状态 冲突( 重复的电子邮件, 已经核实的账户) , 即 409 : 重试相同的请求无济于事 .
  • 400对404 —— 说 BadRequestError("User not found") 责怪打电话的人问了一些没有的东西。 使用 ResourceNotFoundError。例外:在登录时,“没有这样的用户”是一个 NotAuthorizedError,或端点成为账户编号甲骨文.
  • 500对503 500表示我们的密码破了 暂时减少的依赖性为503个,管弦乐团对两者有不同的对待.

处理者的行为

  1. A 类 CustomError 连载着它自己的地位和身体.
  2. 身体保护者 SyntaxError (malform JSON)变成400,而不是500.
  3. 一个非CustomError 带有数字 status 编号 : statusCode 内 [400,599] 保留它——堆栈中的几个库设置了一个准确的库.
  4. 其它的都是500块 fallbackMessage。 。 。 .

在第2至4个分支上 message 堆叠是 永远 序列化:它们可以命名一个表格,一个查询,或者一个秘密. 只信任状态 .

isCustomError

处理器的分支 isCustomError(err)没有 err instanceof CustomError。 。 。 .

instanceof 比较构造器身份, 所以当此软件包的两个复制件在一个过程中存在时, 失败了 node_modules/@easyweb/authentication/node_modules/。失败是静默的和完全的:每次错误都停止匹配,变成通用的500,而类型仍然检查,建筑仍然通过.

两项辩护理由: @easyweb/authentication 声明此软件包为 依赖性 所以npm无法筑巢 CustomError 携带一个 __easywebError 该品牌 isCustomError 掉头 如果您添加了依赖于此软件包, 请基于同样的原因声明为对等方 .

以 :

npm ls @easyweb/errors    # must show exactly one, deduped at the top level

出版

npm run build && npm publish

build 运行 clean 先说 没有它,一个重新命名或被删除的源文件会留下一个孤儿 dist/ 船在焦油丸中.

版本与发布记录

@easyweb/errors 共发布 2 个版本,首次发布于 2026/08/06;过去 12 个月发布了 2 个版本。

版本发布日期距今
1.1.0latest2026/08/142 个月前
1.0.02026/08/063 个月前

关于 @easyweb/errors 的常见问题

@easyweb/errors 是什么?

用于 Easyweb 微服务的共享 HTTP 错误分类: 带有机器可读代码的打出错误类, 以及将其序列化的快速错误处理中件

如何安装 @easyweb/errors?

在项目目录运行 npm install @easyweb/errors,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:express(^5.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@easyweb/errors 支持 TypeScript 吗?

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

@easyweb/errors 支持 ESM 还是 CommonJS?

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

@easyweb/errors 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@easyweb/errors 可以商用吗?

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

@easyweb/errors 的下载量有多少?

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

@easyweb/errors 还在维护吗?

最新版本 1.1.0 发布于 2026/08/14(2 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/08/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。