Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AJV创建自定义错误消息?_Javascript_Json_Reactjs_Typescript_Ajv - Fatal编程技术网

Javascript 如何使用AJV创建自定义错误消息?

Javascript 如何使用AJV创建自定义错误消息?,javascript,json,reactjs,typescript,ajv,Javascript,Json,Reactjs,Typescript,Ajv,我正在尝试将自定义错误消息添加到我的应用程序输入字段,但当我尝试获取此错误时: 错误:严格模式:未知关键字:“errorMessage” 这是密码 文件一: import Ajv, { JSONSchemaType } from 'ajv' import addFormats from 'ajv-formats' const ajv = new Ajv({ allErrors: true, $data: true }) addFormats(ajv) export const emailS

我正在尝试将自定义错误消息添加到我的应用程序输入字段,但当我尝试获取此错误时:

错误:严格模式:未知关键字:“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 : '',
  }
}
从'Ajv'导入Ajv,{JSONSchemaType}
从“ajv格式”导入addFormats
const ajv=new ajv({allErrors:true,$data:true})
addFormats(ajv)
导出常量emailSchema:JSONSchemaType={
键入:“字符串”,
最小长度:1,
格式:“电子邮件”,
//这就是导致错误的原因
错误消息:{
minLength:“此字段不能为空。”,
格式:“必须是有效的电子邮件地址。”,
},
}
导出常量validateEmail=(值:字符串)=>{
返回{
isValid:emailValidator(值),
错误:emailValidator.errors?emailValidator.errors[0]?。消息:“”,
}
}
文件二:

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),
  }
}
从'Ajv'导入Ajv,{JSONSchemaType}
从“./types”导入{LoginCredentials}
从“ajv格式”导入addFormats
进口{
emailSchema,
密码模式,
重述Chatockenschema,
}来自“../utils/validation/auth validation”
从“../../utils/validation/formatter”导入{getFormattedErrors}
const ajv=new ajv({allErrors:true,$data:true})
addFormats(ajv)
const CredentialSchema:JSONSchemaType={
类型:“对象”,
特性:{
emailAddress:emailSchema,
密码:passwordSchema,
recaptchaToken:RecaptChatokenschema,
},
必需:['emailAddress','password','recaptchaToken'],
附加属性:false,
}
常量credentialsValidator=ajv.compile(credentialsSchema)
导出常量validateCredentials=(凭据:LoginCredentials)=>{
返回{
isValid:credentialsValidator(凭证),
错误:getFormattedErrors(credentialsValidator.errors),
}
}

我希望根据错误(例如minLength或format)使用不同的消息,但我希望定义此错误消息的内容,如何执行此操作?

您需要单独使用“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);