Olá, Geovana. Tudo bem?
O problema está no código de excluiProduto.js. O querySelector usado para selecionar o botão de excluir ([data-botao-excluir]) só captura o primeiro elemento que corresponde ao seletor no momento em que o script é carregado. No entanto, os botões de exclusão são adicionados dinamicamente à página por mostrarProdutos.js após a execução da função acessoApi(). Assim, o evento de clique não é associado aos botões criados posteriormente. Além disso, também é preciso mexer um pouco na lógica de alguma outras funções para que recebam o id a ser excluído.
1 - No HTML, adicione uma tag <script> para o arquivo excluirProdutos:
<script src="/scripts/mostrarProdutos.js" type="module" ></script>
<script src="/scripts/excluirProdutos.js" type="module" ></script>
2 - A função mostraProduto deve receber id por parâmetro para que posteriormente a função excluiItem possa receber esse mesmo id. Além disso, você também precisa adicionar o id ao DOM, no exemplo abaixo eu usei o data-id para isso:
function mostraProduto(nome, valor, imagem, id) { // Passando id por parâmetro
    const produto = document.createElement('li');
    produto.className = 'conteiner__produtos-item';
    produto.innerHTML = `<li class="conteiner__produtos-item">
                    <figure class="conteiner__produtos-card">
                        <img src="${imagem}" alt="${nome}">
                            <caption>${nome}</caption>
                    </figure>
                    <div class="conteiner__produtos-valor">
                        <p>${valor}</p>
                    </div> 
                    <button class="conteiner__produtos-botao-lixeira">
                        <img src="/assets/bin icon.png" alt="Excluir item"  data-botao-excluir data-id=${id}>  
                        // Passando o id no data-id, coloquei ambos na tag img, pois se ficasse no button, seria necessário clicar fora da imagem para funcionar!
                    </button>               
                </li>`;
    return produto;
}
Lembre também de atualizar o acessoApi:
async function acessoApi() {
    try {
        const listaApi = await conectaApi.listaProdutos();
        listaApi.forEach((elemento) =>
            lista.appendChild(
                mostraProduto(
                    elemento.nome,
                    elemento.valor,
                    elemento.imagem,
                    elemento.id // Passando o id do elemento
                )
            )
        );
    } catch {
        lista.innerHTML = `<h1 class="mensagem__principal">Ops! Não foi possível encontrar os produtos. 
        Tente recarregar a página.</h1>`;
    }
}
3 - Você pode usar delegação de eventos, associando o evento de clique a um elemento pai comum (como a lista de produtos <ul class="conteiner__produtos">) em vez de associá-lo diretamente aos botões. Isso garante que novos botões adicionados dinamicamente ainda respondam ao evento:
function configurarEventos() {
    const listaProdutos = document.querySelector('[data-lista]');
    listaProdutos.addEventListener('click', (evento) => {
        if (evento.target.matches('[data-botao-excluir]')) {
            const id = evento.target.getAttribute('data-id'); // Obtém o ID do botão
            if (id) {
                excluiItem(id); // Exclui o item com o ID
            }
        }
    });
}
configurarEventos();
Essas mudanças devem ser o suficiente para que o seu projeto funcione corretamente, mas caso ainda precise de ajuda, não hesite em me chamar!
Espero ter ajudado!
Siga firme nos seus estudos e conte com o fórum sempre que precisar!
Abraços :)
  
    Caso este post tenha lhe ajudado, por favor, marcar como solucionado