2
respostas

Erro na exibição do vídeos

async function listaVideos() {
  const conexao = await fetch('http://localhost:3000/videos');
  const conexaoConvertida = await conexao.json();

  return conexaoConvertida;
}

export const conectaApi = {
  listaVideos
}
<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="./css/reset.css">
    <link rel="stylesheet" href="./css/estilos.css">
    <link rel="stylesheet" href="./css/flexbox.css">
    <title>AluraPlay</title>
    <link rel="shortcut icon" href="./img/favicon.ico" type="image/x-icon">
</head>

<body>

    <header>

        <nav class="cabecalho">
            <a class="logo" href="./index.html"></a>

            <div class="cabecalho__pesquisar">

                <input type="search" placeholder="Pesquisar" id="pesquisar" class="pesquisar__input">
                <button class="pesquisar__botao">

            </div>

            <div class="cabecalho__icones">
                <a href="./pages/enviar-video.html" class="cabecalho__videos"></a>
            </div>
        </nav>

    </header>

    <ul class="videos__container" alt="videos alura" data-lista>
    </ul>
    <script src="js/mostrarVideos.js" type="module"></script>
</body>

</html>
import { conectaApi } from "./conectaApi.js";

const lista = document.querySelector("[data-lista]");

function constroiCard(titulo, descricao, url, imagem) {
  const video = document.createElement("li");
  video.classList = "video__item";
  video.innerHTML = 
  `
    <iframe width="100%" height="72%" src="${url}"
        title="${titulo}" frameborder="0"
        allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
        allowfullscreen></iframe>
    <div class="descricao-video">
        <img src="${imagem}" alt="logo canal alura">
        <h3>${titulo}</h3>
        <p>${descricao}</p>
    </div>
`
  return video;
}

async function listaVideo() {
  const listaApi = await conectaApi.listaVideos();
  listaApi.forEach(elemento => lista.appendChild(
    constroiCard(elemento.titulo, elemento.descricao, elemento.urla, elemento.imagem)));
}

listaVideo();

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

2 respostas

Olá, Diego! Tudo ok contigo?

Primeiramente, verifique se a função listaVideos está retornando corretamente os dados da API. Certifique-se de que a URL http://localhost:3000/videos esteja correta e que a API esteja retornando os dados esperados.

Além disso, observe que você está chamando a função listaVideo para exibir os vídeos no HTML. No entanto, no código fornecido, a função se chama listaVideo (sem o "s" no final). Verifique se esse é o nome correto da função que deve ser chamada.

Possui, também, um erro de digitação no trecho de código onde você está chamando a função constroiCard, observe que você está passando elemento.urla em vez de elemento.url como argumento para a função. Isso pode estar causando problemas na exibição dos vídeos. Recomendo corrigir essa linha para garantir que a URL do vídeo seja passada corretamente.

constroiCard(elemento.titulo, elemento.descricao, elemento.url, elemento.imagem)

Por fim, verifique se todos os arquivos JavaScript e CSS estão sendo importados corretamente no arquivo HTML. Certifique-se de que os caminhos dos arquivos estão corretos e que os arquivos estão sendo encontrados.

E veja se o json-server está rodando no console corretamente.

Sugiro que você verifique esses pontos e faça os ajustes necessários no seu código. Caso o problema persista, seria interessante fornecer mais informações sobre o erro específico que está ocorrendo, como mensagens de erro no console do navegador.

Espero ter ajudado e bons estudos!

Diego, tranquilo ?

Dá uma verificada na linha : video.classList = "videos__item";

O correto seria ClassName = "videos__item";

pode ser que ajude, pois definido propriedade classlist .

Espero ter ajudado !