4
respostas

Videos não carregam!

Olá, realizei o passo a passo, mas os vídeos não carregam de forma completa, irei colocar o código e o print do resultado.

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

  console.log(conexaoConvertida);
  return conexaoConvertida;
}

export const conectaApi = {
  listaDeVideos,
};
import { conectaApi } from "./main.js";

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

function constroiCard(titulo, imagem, url, descricao) {
  const video = document.createElement("li");
  video.className = "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.listaDeVideos();
  listaApi.forEach((e) =>
    lista.appendChild(constroiCard(e.titulo, e.url, e.descricao, e.imagem))
  );
}

listaVideo();

Esse é o resultado:

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

4 respostas

A não ser que você tenha declarado a função num arquivo chamado main.js, ao importar o conectaApi.js o caminho dele deve ser o arquivo com o próprio nome, como foi feito na aula.

import { conectaApi } from "./conectaApi.js";

Oii, Tércio! Tudo bem?

Complementando a resposta do Roger, inclusive, agradeço a interação.

Pude observar que em lista.appendChild os parâmetros estão fora de ordem comparando com os passados em função constroiCard(titulo, imagem, url, descricao). Dessa forma, os parâmetros são passados de forma desordenada, causando uma "confusão" na leitura do código.

Recomendo que coloque os parâmetros da lista.appendChild conforme está na função constroiCard(titulo, imagem, url, descricao), segue o exemplo:

lista.appendChild(constroiCard(e.titulo, e.imagem, e.url, e.descricao))
  );
  • Aqui está o código completo e refatorado:
import { conectaApi } from "./main.js";

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

function constroiCard(titulo, imagem, url, descricao) {
  const video = document.createElement("li");
  video.className = "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.listaDeVideos();
  listaApi.forEach((e) =>
   lista.appendChild(constroiCard(e.titulo, e.imagem, e.url, e.descricao))
  );
  );
}

listaVideo();

Espero que a orientação te ajude.

Bons estudos, Tércio!

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

Boa tarde copiei seu código e mesmo assim continua não aparecendo os vídeos (alterei o nome para o arquivo que nomeei igual ao da instrutora) Insira aqui a descrição dessa imagem para ajudar na acessibilidadeO outro arquivo:Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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

Oii, Augusto! Tudo bem?

Pelo print compartilhando, é válido verificar se os dois primeiros vídeos estão privados ou se possuem direitos autorais restritivos que não permitem o uso dos mesmos. Você pode verificar isso diretamente no vídeo na plataforma do Youtube.

E para podermos te ajudar de forma personalizada e mais assertiva, recomendo que abra um novo tópico no fórum descrevendo a sua dúvida e adicionando esses prints. E se possível, disponibilize o seu Github contendo todos os arquivos e códigos.

Dessa forma, nos monitores, poderemos te ajudar a encontrar uma solução.

Bons estudos, Augusto!