前言
在开发前端项目的过程中,我们无法避免地会涉及到后端服务的接入,为了提高代码的重用性和可维护性,我们通常会将服务端返回的信息进行统一的错误处理。而在错误处理过程中,我们需要关注的主要是对错误信息处理的标准化和易于维护,这时候一个好用的 npm 包可以很好地解决我们的问题。
这篇文章将会介绍一个前端常用的错误处理 npm 包 @horacehylee/api-error-handler 的使用方法。
包安装
首先,我们需要在我们的项目中安装该 npm 包。在终端执行以下命令即可:
npm install @horacehylee/api-error-handler
包使用
错误信息标准化
我们通过该包可以将服务器 API 返回错误信息标准化,以提高错误信息的统一性,方便前端开发者快速读取和处理错误信息。该包的标准错误信息的格式如下:
{ name: errorName, code: errorCode, message: errorMessage, suggestions: errorSuggestion, }
其中,各字段的含义如下:
name
: 错误名称,例如ValidationError
code
: 错误码,可以是自定义的字符串或者默认的 HTTP 状态码message
: 错误信息描述suggestions
: 错误信息处理建议,可以是一个 Markdown 格式的字符串或者 HTML 格式的字符串
异常处理
接下来,我们将详细介绍该包的使用方法,包括如何对返回的异常进行处理。
首先,我们需要使用 apiErrorHandler
函数对错误进行处理:
const { apiErrorHandler } = require('@horacehylee/api-error-handler'); app.use(apiErrorHandler);
错误处理函数的原理是通过在 HTTP Response 对象上挂载一个 end
函数来实现,该函数会在请求结束时被调用,从而得到一个机会来获取错误信息并进行处理。
我们可以将该函数挂载到请求处理链的最后一个处理函数上,以确保能够捕获到所有的错误信息。
错误抛出
在接口处理过程中,如果存在异常情况,则需要主动抛出错误,以确保错误能够被错误处理函数 apiErrorHandler
捕获到并进行处理。
const { BadRequestError } = require('@horacehylee/api-error-handler'); ... if (!req.body.email) { throw new BadRequestError('Missing email field'); }
在该代码示例中,我们主动抛出了一个 BadRequestError
错误,该错误表明请求参数存在错误。
相应的,我们也可以主动抛出其他类型的错误,例如 NotFoundError
,UnauthorizedError
,ForbiddenError
等,这些错误类型同样都已经预定义好,使用方法也类似。
定义自定义错误
如果默认的错误类型无法满足我们的需求,我们可以通过继承 ApiError
来自定义错误类型,例如下面这个示例中自定义的 MyCustomError
:
-- -------------------- ---- ------- ----- - -------- - - ------------------------------------------ ----- ------------- ------- -------- - -------------------- - --------------- --------- - ---------------- --------- - ----- ---------------- - ------- ----- ---- -------- - - ----- --- ---------------------- --------
在自定义错误的过程中,我们需要通过继承 ApiError
来定义自己的错误类,并且需要在构造函数中对 name
,code
,suggestions
等属性进行赋值,以便后续的错误处理函数能够正确地识别错误类型,并进行相应的处理。
总结
通过本文的介绍,我们详细介绍了前端常用的错误处理 npm 包 @horacehylee/api-error-handler 的使用方法,包括了错误信息标准化,异常处理,自定义错误等方面。我们相信通过这个包的使用,可以提高前端项目的代码质量和可维护性,为我们的开发工作带来更大的帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005732f81e8991b448e956d