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

[Bug] Vídeos não carregam

<!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>

    <script src="./js/mostrarVideos.js" type="module"></script>
</body>

</html>
7 respostas
async function listaVideos() {
    const conexao = await fetch("http://localhost:3000/videos");
    const conexaoConvertida = await conexao.json();
    
    return conexaoConvertida;
}

export const conectaApi = {
    listaVideos
}
import { conectaApi } from "./conectaAPI.js"; // importando a variável do conectaAPI

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

function constroiCard(titulo, descricao, url, imagem) {
    const video = document.createElement("li");
    video.className = "videos__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 listaVideos() {
    const listaApi = await conectaApi.listaVideos();
    listaApi.forEach(elemento => lista.appendChild( // p cada item da lista abaixo, uma LI será criada.
        constroiCard(elemento.titulo, elemento.descricao, elemento.url, elemento.imagem)))
}

listaVideos();

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Ao realizar o código acima, os vídeos somem.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Erros no console.

solução!

Oi Renan! Tudo ok contigo?

Bom esse erro está indicando que a promisse feita no código não foi concluída.

Para resolver isso você precisa iniciar o servidor Node localmente em seu projeto.

Mas infelizmente por politicas de segurança do navegador alguns avisos vão ficar aparecendo no console, e sobre eles não tem o que fazer, mas vamos com calma.

  • Primeiro você deve ter o Node instalado em seu computador.
  • Após o ter, você deve abrir o seu projeto no terminal e instalar o json-server através do npm package.
  • Então você deve pedir para o json-server acompanhar o arquivo db.json na íntegra para que as requisições funcionem.
  • Eu vou deixar um gif de execução mostrando como fazer isso tá. Aqui: gif de execução da resolução do problema

Como você pode ver ocorreram vários erros no console, mas vamos lá.

No geral era isso, caso precise eu estarei por aqui.

Abraços e bons estudos.

Obrigado pelo retorno, tinha conseguido mas sua resposta me ajudou muito.

Fico feliz em ajudar.

Caso precise estarei por aqui.

E conte com a comunidade do fórum para lhe ajudar em momentos que tiver problemas e dificuldades com os projetos dos cursos.

Era isso, abraços e bons estudos.