Bom dia os vídeos dá minha página não estão carregando.
LInk do meu projeto no Github: https://github.com/Carloshbfreire/aluraplay-requisicoes-main
Bom dia os vídeos dá minha página não estão carregando.
LInk do meu projeto no Github: https://github.com/Carloshbfreire/aluraplay-requisicoes-main
Oi, Carlos, tudo bem?
No seu código, no arquivo "conectaApi.js", você está utilizando a porta 3001. No entanto, o json-server
, por padrão, abre na porta 3000. Para corrigir, uma opção é ao executar o json-server
, especificar a porta 3001, exemplo:
json-server --watch .\db.json --port 3001
Outra opção, é alterar o código de "conectaApi.js" para rodar na porta padrão, que é a 3000, ex:
const conexao = await fetch("http://localhost:3000/videos")
Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!
Troquei as portas e continua com erro, os vídeos não aparecem. ![]( ) vou te passar os meus códigos.
Index.HTML
<!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="./jp/mostrarVideos.js" type="module"></script>
</body>
</html>
mostrarVideos.js
import { conectaApi } from "./conectaApi.js"
const lista = document.querySelector("[data-lista]")
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(constroiCard(elemento.titulo, elemento.descricao, elemento.url, elemento.imagem)))
}
listaVideos()
conectaApi.js
async function listaVideos() {
const conexao = await fetch("http://localhost:3002/videos")
const conexaoConvertida = await conexao.json()
return conexaoConvertida
}
export const conectaApi = {
listaVideos
}
Oi, Carlos,
Desculpa a demora em te responder!
No código que chama a API, que está no arquivo "conectaAPI", você está utilizando a porta 3002 do localhost. Então para que você consiga fazer com que os vídeos sejam disponibilizados na tela, precisamos rodar a API com o json-server
por meio do comando:
json-server --watch db.json --port 3002
Lembre-se que a porta de saída que você colocar na requisição assíncrona, precisa ser a mesma que está rodando no seu terminal com o json-server
. Outro ponto importante é manter o json-server
rodando durante o desenvolvimento e sempre que você quiser utilizar o site, caso contrário os vídeos não irão aparecer e você terá um erro de requisição 404, onde os vídeos não são encontrados.
Além disso, sempre que você fizer sair fechar o json-server
e abrir denovo é necessário clicar no botão de recarregar a página no seu navegador ou usar o atalho "CTRL R".
Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!