nodejs 和 ejs :未定义"var"



在app.js中,我使用npm从youtube视频中获取信息,问题是当我试图将标题和缩略图等关键信息传递到我的index.ejs文件时,它会给我一个数据未定义的错误,我将非常感谢您的帮助。

app.js

const express = require("express")
const bodyParser = require("body-parser")
const youtubeinfo = require("yt-scraper")
const path = require('path')
const app = express()


app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.set("view engine","ejs")
app.set('views', path.join(__dirname, '/views')) 
app.use(express.static(__dirname + '/public'));
app.get("/",(req,res)=> {
res.render("index")
})

app.post("/convert",(req,res) => {

var url = req.body.url
var data = youtubeinfo.videoInfo(url,
options = { detailedChannelData: true } )
console.log(data)


data.then(data => {

console.log("=== VIDEO INFO ===")
console.log(data)
res.render("index", {datos:data})
}).catch(err => {
console.log("=== ERROR ===")
console.log(err)
console.log("error")
res.render("error")
})



                     
})            

app.listen(5000, ()=> {
console.log("server inciated in port 5000")
})

索引.ejs

<!DOCTYPE html>
<html lang="en">
<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">
<title>Descargar Videos y Musica de Youtube y mas</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Staatliches&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/estilo.css">
</head>
<body>
<div class="container">
<header class="encabezado">
<nav class="navegacion">
<li class="li1">
<a class="link" href="https://www.google.com/">
<span>
"  Redes "
</span>
</a>
</li>
<li class="li2">
<a class="link" href="https://www.google.com/">
<span>
" Contacto " 
</span>
</a>
</li>
<li class="li3">
<a class="link" href="https://www.google.com/">
<span>
"   Mas  " 
</span>
</a>
</li>
</nav>

</header>
<main>

<div class="main-div">
<h1 class="main-titulo">
Youtube MP3 Y MP4
</h1>
<form action="/convert" method="POST" class="contenedor-formulario">

<input type="search" name="url" placeholder="Yourube URL" class="url-input">
<button class="convertir">CLICK ME</button>
<img src="<%=datos.thumbnails[0].url%>" alt="" class="miniatura">
<h1 class="titulo-video" target="_blank" href="<%=datos.url%>">
<span><%=datos.title%></span>
</h1>


</form>
</div>
</main>
</div>
</body>
</html>

错误.ejs

<!DOCTYPE html>
<html lang="en">
<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">
<title>Document</title>
</head>
<body>
<h1>Error al convertir :(</h1>
<h2>¿A que se debe esto?</h2>
<p>Intentaste introducir una Url invalida</p>
<br>
<p>Intentaste introducir un Url de Youtube Short por lo que por el momento no es admitido (pagina aun en desarrollo)</p>
<br>
<p>El Url ingresado no pertenece a la plataforma de Youtube</p>
<img src="" alt="">
</body>
</html>

这是运行我的错误*

ReferenceError: C:UsersROYERDesktoppracticaviewsindex.ejs:51
49|                     <input type="search" name="url" placeholder="Yourube URL" class="url-input">
50|                     <button class="convertir">CLICK ME</button>
>> 51|                     <img src="<%=datos.thumbnails[0].url%>" alt="" class="miniatura">
52|                     <h1 class="titulo-video" target="_blank" href="<%=datos.url%>">
53|                     <span><%=datos.title%></span>
54|                     </h1>

datos is not defined
at eval ("C:\Users\ROYER\Desktop\practica\views\index.ejs":12:25)
at index (C:UsersROYERDesktoppracticanode_modulesejslibejs.js:703:17)
at tryHandleCache (C:UsersROYERDesktoppracticanode_modulesejslibejs.js:274:36)
at exports.renderFile [as engine] (C:UsersROYERDesktoppracticanode_modulesejslibejs.js:491:10)
at View.render (C:UsersROYERDesktoppracticanode_modulesexpresslibview.js:135:8)
at tryRender (C:UsersROYERDesktoppracticanode_modulesexpresslibapplication.js:657:10)
at Function.render (C:UsersROYERDesktoppracticanode_modulesexpresslibapplication.js:609:3)
at ServerResponse.render (C:UsersROYERDesktoppracticanode_modulesexpresslibresponse.js:1039:7)
at C:UsersROYERDesktoppracticaapp.js:20:9
at Layer.handle [as handle_request] (C:UsersROYERDesktoppracticanode_modulesexpresslibrouterlayer.js:95:5)

在我的情况下,当我遇到这个错误时,我只需要重新启动我的节点应用程序。希望有帮助。问候

最新更新