Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Cannot Read property 'addEventListener' of null

Estou com o seguinte problema com o meu arquivo .js, o formulario está nulo, mas não sei o que fazer para ele conseguir ler! Então não consigo cadastrar clientes! Estava funcionando até pouco tempo, consegui finalizar o curso normalmente, só que após isso, o erro voltou.

Erro: Uncaught TypeError: Cannot read cadastraClientes-controller.js:5 property 'addEventListener' of null at cadastraClientes-controller.js:5

JS

import {clienteService} from '../service/cliente-service.js';

const formulario = document.querySelector(['data-form']);

formulario.addEventListener('submit', async (evento) => {
    evento.defaultPrevented();
    const nome = evento.target.querySelector('[data-nome]').value;
    const email = evento.target.querySelector('[data-email]').value;

    try {
       await clienteService.criaCliente(nome, email);
        window.location.href = '../telas/cadastro_concluido.html';
    }
    catch(erro){
        console.log(erro);
        window.location.href = '../telas/erro.html';
    }
});
4 respostas

Oi Roger!

A mensagem de erro indica que há um erro na captação do form pelo querySelector.

No seu código, está escrito

const formulario = document.querySelector(['data-form']);

Porém deveria ser:

const formulario = document.querySelector('[data-form]')

O '' deve estar fora dos colchetes '[data-form]'.

Espero ter ajudado! Qualquer outra dúvida pode postar aqui. :)

Outro erro bem bobinho mesmo rsrsrs, consegui arrumar ele, porem o erro foi para a linha 6 (evento.defaultPrevented( );), com um TypeError, que seria erro de escrita, certo?

solução!

Oi Roger!

O "TypeError" se refere a um erro de tipo. Neste caso, você tentou executar o comando

evento.defaultPrevented();

mas evento.defaultPrevented não é uma função e sim um boolean. Acredito que você quis usar

evento.preventDefault()

Tente realizar esta troca e comenta aqui se deu certo!

Funcionou perfeitamente! Devo ter aceitado a sugestão errada do emmet e não verifiquei.

Obrigado, Eduardo Tioma!