前言
在现代 Web 开发中,Node.js 是一款非常重要的工具,而 Express.js 又是 Node.js 中最受欢迎、最流行的 Web 框架之一。Express.js 的错误处理非常的常见,但是很多时候错误处理缺乏一个好的工具,这时候 @expresso/errors 这个 npm 包就非常适合了。本文将详细介绍这个 npm 包的用法。
概述
@expresso/errors 是一个工具包,主要是用来对 Express.js 中错误进行更好、更方便的处理。很多时候,我们在开发过程中需要自定义错误信息,并对错误码进行相应的处理,而 @expresso/errors 正好可以帮助我们完成这些任务。
安装
使用 npm 命令行进行安装:
npm install --save @expresso/errors
使用
引入模块
首先,我们需要在文件中引入模块:
const { HttpError } = require('@expresso/errors');
HttpError
HttpError 是 @expresso/errors 中最重要的一个类。这个类继承了 Node.js 原生的 Error 类,它的作用是方便我们生成自定义错误对象,并返回给客户端。
HttpError 的使用非常简单,我们只需要通过 new 关键字来实例化一个 HttpError 对象,并传入错误信息和错误码:
throw new HttpError('Not Found', 404);
传入错误信息和错误码后,我们可以得到一个 HttpError 对象。这时候,我们就可以把这个对象返回客户端,告诉客户端发生了什么错误。
HttpError 常见错误码
HttpError 类支持绝大多数 HTTP 错误码,包括 400、401、403、404、500 等。具体错误码列表如下:
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 409 Conflict
- 500 Internal Server Error
自定义错误码
除了 HttpError 内置的错误码外,我们还可以自定义错误码。如果我们需要传递一些自定义错误码给客户端,我们可以通过继承 HttpError 来实现。
class AppError extends HttpError { constructor(message, code) { super(message); this.code = code; } }
通过这种方式,我们可以实现自己的错误码,并将错误码传递给客户端。
结合 Express.js 使用
在 Express.js 中,我们可以使用中间件来捕获异常,并且让异常信息更加友好。@expresso/errors 提供了一个 middleware,在使用中间件的时候,我们需要手动引入它并添加到 Express.js 应用程序中。
const { errorHandlerMiddleware } = require('@expresso/errors');
在 Express.js 应用程序中使用 errorHandlerMiddleware:
app.use(errorHandlerMiddleware);
这样,我们就可以在 Express.js 中很方便的使用 @expresso/errors 了。
示例
在实际应用中,我们一般需要实现自定义错误信息,如下所示:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - --------- - - ---------------------------- ----- --- - ---------- ------------ ----- ---- -- - ----- --- -------------- ------- ----- --- ------------- ---- ---- ----- -- - ------------------------- ------------------------- -- ----- ---------- -------- ------------ ------ ---- --- --- ---------------- -- -- - ---------------- --------- -- ---- -------- ---展开代码
这时候,如果访问 http://localhost:3000
就会获得一个 404 错误,并且返回以下数据:
{ "message": "Not Found", "error": { "name": "HttpError", "message": "Not Found", "statusCode": 404 } }
结语
@expresso/errors 是一个非常好的工具包,它可以方便我们在 Node.js + Express.js 开发中进行错误处理。本文介绍了它的基本使用方法,希望能够帮助到大家。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/154485