YUP验证期间发生错误“无法读取未定义的属性'length'”

时间:2020-06-03 14:37:59

标签: javascript reactjs react-native validation yup

我得到了以下代码块:

 const schema = useMemo(
    () =>
      yup.object().shape({
        name: yup
          .string()
          .trim()
          .required("Missing name")
          .max(40, "Too long"),
        template: yup
          .string()
          .trim()
          .max(2000, "Too long")
          .matches(/^https?:\/\//, "Invalid protocol")
          .required("Missing template")
          .test("variablesUsage", "Missing vars", function (
            value
          ) {
            return vars.some(v => value.includes(`{${v}}`))
          }),
        enabled: yup.boolean(),
      }),
    [message, vars]
  )

问题在于,每次我在“名称”字段中键入内容时,都会在控制台中收到以下错误:“未捕获(承诺)TypeError:无法读取未定义的属性'length'”

如果我从“模板”中删除.test,效果很好,但是我找不到此错误的根本原因。

基本上,在.test中,有一些特定的关键字,“模板”中必须至少包含这些关键字中的1个

1 个答案:

答案 0 :(得分:1)

错误似乎是由此行引起的

return vars.some(v => value.includes(`{${v}}`))

我添加了以下行:

if (value == null) {return false;}

它正在工作。