You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vuelidate排查故障时如何查看所有验证错误信息

排查方案

直接在this.$v.$touch()执行后新增校验错误打印逻辑即可,不同Vuelidate版本对应代码如下:

Vuelidate 2.x 版本(带$errors内置属性)

async SUBMIT() {
  this.$v.$touch();      
  // 新增错误打印逻辑
  const logErrors = (vInstance, path = '') => {
    if (vInstance.$errors.length) {
      console.log(`错误路径:${path || '根校验节点'}`, vInstance.$errors.map(err => ({
        字段名: err.$propertyPath,
        触发规则: err.$validator,
        错误提示: err.$message,
        字段当前值: err.$model
      })))
    }
    // 递归遍历子字段校验状态
    Object.keys(vInstance).forEach(key => {
      if (!key.startsWith('$') && typeof vInstance[key] === 'object' && vInstance[key]) {
        logErrors(vInstance[key], path ? `${path}.${key}` : key)
      }
    })
  }
  logErrors(this.$v)

  if (this.$v.$invalid) {
    return;
  } 
  // 原有提交逻辑
}

执行后打开浏览器控制台,就能直接看到所有未通过校验的字段、对应规则、当前值,快速定位问题。

Vuelidate 0.x 旧版本

如果是老版本没有$errors属性,用下面的简化逻辑即可:

async SUBMIT() {
  this.$v.$touch();      
  // 打印所有无效字段
  const findInvalid = (v, prefix = '') => {
    Object.keys(v).forEach(k => {
      if (k.startsWith('$')) return
      if (v[k].$invalid) {
        console.log(`无效字段:${prefix}${k}`, v[k])
        findInvalid(v[k], `${prefix}${k}.`)
      }
    })
  }
  findInvalid(this.$v)

  if (this.$v.$invalid) {
    return;
  } 
  // 原有提交逻辑
}

常见问题排查方向

  • 校验规则定义时漏覆盖嵌套字段
  • 字段默认值不符合校验规则(比如必填字段默认值为undefined)
  • 自定义校验规则返回值逻辑错误

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:15:05