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

Erro no onclick="excluirCliente(${id})" - Uncaught ReferenceError: excluirCliente

Olá! Notei que ao usar o type="module" no arquivo clientes.html na seguinte linha:

<script type="module" src="./componentes/listagem/listagem-clientes.js"></script>

Ele não executa o onclick="excluirCliente(${id})" no botão Excluir

clientes.html:1 Uncaught ReferenceError: excluirCliente is not defined
    at HTMLButtonElement.onclick (clientes.html:1)

Por que isso acontece? Como resolver?

Método excluir cliente que está no listagem-clientes.js

const excluirCliente = id => {
  if(confirm("Deseja excluir o cliente?")){
    deletarCliente(id);
  }
  document.location.reload()
}
6 respostas

Os módulos só funcionam se você estiver acessando a página através de um servidor. Se estiver acessando através do endereço do arquivo html não vão funcionar.

Pode ser também que você esteja importando o código JavaScript depois do elemento html que faz a chamada da função.

Sugiro também dar uma conferida na Documentação sobre módulos.

Estou rodando pelo live-server acredito que deveriam funcionar os módulos...

Penso que a função excluirCliente está no módulo listagem-clientes.js por isso não funciona no evento onclick

Mas como faço então?

Você pode usar addEventListener e criar o evento a partir do módulo, garantindo que ele tenha acesso à função.

Se achar necessário pode me mandar o link para o código no github que dou uma olhada.

Opa! talvez eu esteja me antecipando ao conteúdo do curso... mas se puder me ajudar agradeço Matheus! https://github.com/GuiEnrik/learnfetchapi

solução!

É isso mesmo, no próximo módulo esse problema será resolvido.

Como o professor explicou lá na aula Resolvendo o Cors a partir do momento em que você começa a usar módulos as variáveis deixam de ser expostas no escopo global.Com isso a função excluirCliente deixa de estar disponível no escopo do botão, que foi inserido como String dentro do HTML.

Espero ter ajudado, um abraço.

Muito obrigado Matheus!