Validate an array of strings with yup

Hello everyone, I want to validate an array of strings with yup. I get the following error:

Uncaught TypeError:
yup__WEBPACK_IMPORTED_MODULE_0__.array(…).of(…).min(…).matches
is not a function

I googled this but found nothing what helps. But the reason must be this array, because all other validations works.
Code:

categories: Yup.array()
    .of(Yup.string())
    .min(1, "message")
    .matches(/([A-Za-z]+( [A-Za-z]+)+)/i, "message")
    .required("message"),

Thanks for your help

Thanks for response. Here is the full code:

import * as Yup from 'yup';

export const createProductSchema = Yup.object().shape({
    image: Yup.string().required("Sie müssen ein Bild hochladen"),
    title: Yup.string().required("Bitte geben Sie den Namen des Produktes ein"),
    producer: Yup.string().required("Bitte den Hersteller eingeben"),
    categories: Yup.array()
    .of(Yup.string())
    .min(1, "Bitte geben Sie eine ProduktKategorie ein, als erstes die Hauptkategorie(z.B Herren), dann nur mit Leerzeichen getrennt die Unterkategorie(z.B Sportschuhe)")
    .matches(/([A-Za-z]+( [A-Za-z]+)+)/i, "Bitte die Kategorien ohne Komma eingeben. Erst die Hauptkategorie")
    .required("Sie müssen eine Kategorie eingeben"),
    desc: Yup.string().required("Bitte geben Sie eine Produktbeschrebung ein"),
    price: Yup.string().required("Bitte geben Sie den Preis ein"),
    currency: Yup.string().required("Bitte geben Sie die Währung ein, als €"),
    colors: Yup.array()
    .of(Yup.string())
    .min(1, "Bitte geben Sie die Farben nur durch Leerzeichen getrennt in englischer Sprache ein")
    .matches(/([a-z]+( [a-z]+)+)/i, "Bitte die Farben ohne Komma eingeben. Farben bitte klein schreiben")
    .required("Sie müssen eine Farbe eingeben"),
    sizes: Yup.array()
    .of(Yup.string())
    .min(1, "Bitte geben Sie die Größen nur durch Leerzeichen getrennt ein")
    .matches(/\s[0-9]+\s[0-9]+\s[0-9]+/, "Bitte die Größen ohne Komma eingeben Am Anfang ein Leerzeichen.")
    .required("Sie müssen eine Größe eingeben"),
    inStock:Yup.string()
    .matches(/[a-z]+ /, "Bitte klein schreiben")
    .required("Bitte geben Sie ein, ob das Produkt im Bestand ist, wenn ja dann true, wenn nein, dann false")
})

It appears when you use the of method, the min, matches and required need to be after Yup.string() nested within the of’s ( and ):


categories: Yup.array()
    .of(Yup.string()
         .min(1, "Bitte geben Sie eine ProduktKategorie ein, als erstes die Hauptkategorie(z.B Herren), dann nur mit Leerzeichen getrennt die Unterkategorie(z.B Sportschuhe)")
         .matches(/([A-Za-z]+( [A-Za-z]+)+)/i, "Bitte die Kategorien ohne Komma eingeben. Erst die Hauptkategorie")
         .required("Sie müssen eine Kategorie eingeben")
     ),

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.