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

[Bug] Uncaught SyntaxError: Identifier 'listaDeTeclas' has already been declared (at main.js:1:1)

Pessoal, to com esse no console. Desde a aula 3 - Listas não consigo resolver, alguém sabe me dizer o que é?

7 respostas

Olá Carlos! Tudo bem com você?

O erro has already been declared indica que a variável listaDeTeclas está sendo declarada mais de uma vez no seu código. Isso geralmente acontece quando usamos let ou const para declarar uma variável que já foi declarada anteriormente no mesmo escopo.

Porém, como não tenho acesso a seu código completo, é incerto dizer a linha exata que você deve excluir. Mas, deixo como dica você verificar se em algum lugar do seu código a variável listaDeTeclas está sendo declarada mais de uma vez. Por exemplo, você pode ter algo assim em diferentes partes do seu código:

const listaDeTeclas = document.querySelectorAll('.tecla');
// Algum código...
const listaDeTeclas = document.querySelectorAll('.tecla'); // Isso causará o erro

Também deixo o código completo do arquivo main.js para sua conferência:

function tocaSom (idElementoAudio) {
    document.querySelector(idElementoAudio).play();
}
const listaDeTeclas = document.querySelectorAll('.tecla');
//para
for (let contador = 0; contador < listaDeTeclas.length; contador++) {
    const tecla = listaDeTeclas[contador];
    const instrumento = tecla.classList[1];
    const idAudio = `#som_${instrumento}`; //template string
    tecla.onclick = function () {
        tocaSom(idAudio);
    }
}

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

![]Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Bom dia, Rafael! Obg pelo retorno, mas o erro persiste mesmo atualizando o js para o código que mandou. Penso se não pode ser algum problema no navegador, pois mesmo o código antigo não tinha repetições da listaDeTeclas.

Olá Carlos,

Você pode compartilhar o código do seu projeto completo para que eu possa investigar melhor a linha exata que está gerando o erro? Dessa forma, consigo te orientar melhor.

Pode compartilhar via drive ou Github, o que for mais prático para você.

Abraços e bons estudos!

Fico no aguardo e à disposição

Olá! Segue o meu git

https://github.com/eduhgoncalves/tecladoMidi

solução!

Olá!

Revisando o código, encontrei o problema. Acontece que em algum momento da aula, foi ensinado onde a chamada do main.js deve estar dentro do html.

E como naquele momento o javascript dependia de conteúdo que estava dentro do

coloquei o main.js dentro do body e esqueci de retirá-lo, e nas aulas seguintes chamei ele novamente na tag . Logo a execução do javascript estava duplicada. Ajustando isso foi resolvido. Obrigado.

Olá, Carlos.

Fico feliz que tenha resolvido, realmente era uma chamada duplicada. Obrigado pela atualização.

Sucesso em seus estudos!