如何使用 AJV 创建自定义错误消息?
Posted
技术标签:
【中文标题】如何使用 AJV 创建自定义错误消息?【英文标题】:How to create custom error messages using AJV? 【发布时间】:2021-07-04 09:02:47 【问题描述】:我正在尝试将自定义错误消息添加到我的应用程序输入字段,但是当我尝试收到此错误时:
错误:严格模式:未知关键字:“errorMessage”
这是代码。
文件一:
import Ajv, JSONSchemaType from 'ajv'
import addFormats from 'ajv-formats'
const ajv = new Ajv( allErrors: true, $data: true )
addFormats(ajv)
export const emailSchema: JSONSchemaType<string> =
type: 'string',
minLength: 1,
format: 'email',
//this is whats causing the error
errorMessage:
minLength: 'This field cannot be empty.',
format: 'Must be a valid email address.',
,
export const validateEmail = (value: string) =>
return
isValid: emailValidator(value),
error: emailValidator.errors ? emailValidator.errors[0]?.message : '',
文件二:
import Ajv, JSONSchemaType from 'ajv'
import LoginCredentials from './types'
import addFormats from 'ajv-formats'
import
emailSchema,
passwordSchema,
recaptchaTockenSchema,
from '../../utils/validation/auth-validation'
import getFormattedErrors from '../../utils/validation/formatter'
const ajv = new Ajv( allErrors: true, $data: true )
addFormats(ajv)
const credentialsSchema: JSONSchemaType<LoginCredentials> =
type: 'object',
properties:
emailAddress: emailSchema,
password: passwordSchema,
recaptchaToken: recaptchaTockenSchema,
,
required: ['emailAddress', 'password', 'recaptchaToken'],
additionalProperties: false,
const credentialsValidator = ajv.compile(credentialsSchema)
export const validateCredentials = (credentials: LoginCredentials) =>
return
isValid: credentialsValidator(credentials),
errors: getFormattedErrors(credentialsValidator.errors),
我想要一条不同的消息,具体取决于错误,例如 minLength 或格式,但我想定义这条错误消息的内容,我该怎么做?
【问题讨论】:
【参考方案1】:您需要单独使用“ajv-errors”库。类似的东西:
import Ajv from 'ajv';
import addFormats from 'ajv-formats'
import ajvErrors from 'ajv-errors';
const ajv = new Ajv( allErrors: true, $data: true );
addFormats(ajv);
ajvErrors(ajv);
【讨论】:
谢谢你!我已经找了好几天了。以上是关于如何使用 AJV 创建自定义错误消息?的主要内容,如果未能解决你的问题,请参考以下文章
最新的 AJV 和 ajv-formats 必须在 React 中被打破
当我导航到其他路由器页面时,如何清除由错误边界创建的自定义消息