7
respostas

TypeError: mensagensDeErro[tipo] is undefined

Boa tarde Após a quarta atividade da segunda aula está dando erro se tipo na função mensagensDeErro , como posso resolver esse problema?

7 respostas

Fala ai Matheus, tudo bem? Esse erro pode estar ocorrendo por N motivos, no caso, parece que seu objeto mensagensDeErro não possui a chave que você está tentando ler.

Sugiro adicionar um console.log(tipo) antes dessa linha e verificar o será impresso, depois, verifique o objeto se ele contém o tipo que foi logado.

Espero ter ajudado.

Olá, tudo bem? Então, fiz um console.log() no lugar e deu true, até aí tudo bem, mas quando ele passa pela condicional, por algum motivo retorna undefined.

Baixei os arquivos atualizados do professor no Github e a feature de mensagem de erro personalizado, também não funciona como apareceu na aula.

Fala Matheus, faz o seguinte, compartilha comigo o seu projeto, assim eu consigo simular o problema por aqui e analisá-lo com mais calma.

Pode compartilhar através do Github ou Google Drive (zipado).

Fico no aguardo.

Opa, boa tarde Segue o link do arquivo compactado compartilhado do Google Drive: arquivo-alura.zip

Fala Matheus, o link aqui está quebrado, não consegui fazer o download, consegui subir novamente e mandar o novo link?

Abraços.

Olá, Ajustei o link: Arquivos Alura

Fala Matheus, dei uma olhada no projeto, o mesmo tem bastante página, mas, o motivo de alguns campos darem o erro de undefined no console do navegador é porque não existem validações para eles.

Por exemplo, eu testei a página referente ao cadastro de projeto, nos campos preço e nome a validação da erro, isso porque no objeto:

const mensagensDeErro = {
        email: {
            valueMissing: "O e-mail é necessário",
            typeMismatch: "Este não é um e-mail válido"
        },
        senha: {
            valueMissing: "O senha é necessária",
            tooShort: "A senha deve ter no mínimo 4 caracteres"
        },
        dataNascimento: {
            valueMissing: "O data de nascimento é necessária",
            rangeUnderflow: "A data mínima é 01/01/1901",
            customError: "A idade mínima é de 18 anos"
        },
        cpf: {
            valueMissing: "O CPF é necessário"
        },
        rg: {
            valueMissing: "O RG é necessário"
        },
        cep: {
            valueMissing: "O CEP é necessário"
        },
        logradouro: {
            valueMissing: "O logradouro é necessário"
        },
        cidade: {
            valueMissing: "A cidade é necessária"
        },
        estado: {
            valueMissing: "O estado é necessário"
        }
    };

Não existe as chaves nomeProduto e preco com a validação valueMissing.

Sendo assim precisaria adicioná-las:

const mensagensDeErro = {
        email: {
            valueMissing: "O e-mail é necessário",
            typeMismatch: "Este não é um e-mail válido"
        },
        senha: {
            valueMissing: "O senha é necessária",
            tooShort: "A senha deve ter no mínimo 4 caracteres"
        },
        dataNascimento: {
            valueMissing: "O data de nascimento é necessária",
            rangeUnderflow: "A data mínima é 01/01/1901",
            customError: "A idade mínima é de 18 anos"
        },
        cpf: {
            valueMissing: "O CPF é necessário"
        },
        rg: {
            valueMissing: "O RG é necessário"
        },
        cep: {
            valueMissing: "O CEP é necessário"
        },
        logradouro: {
            valueMissing: "O logradouro é necessário"
        },
        cidade: {
            valueMissing: "A cidade é necessária"
        },
        estado: {
            valueMissing: "O estado é necessário"
        },
        nomeProduto: {
            valueMissing: "O nome é necessário"
        },
        preco: {
            valueMissing: "O preço é necessário"
        },
    };

Isso deve resolver o problema para a validação de campos obrigatórios, precisaria verificar se outras validações irão dar algum problema.

Espero ter ajudado.