我正在尝试使用Node、Express、Mongoose和ejs制作类似YouTube克隆应用程序的东西。当尝试使用res.render()将结果发送到ejs文件中的iframe时,我收到了一个错误。
下面是ejs和服务器文件的代码:
索引.js:-
>!
>! `const express = require('express');
>! const mongoose = require('mongoose');
>! const bodyParser = require('body-parser');
>! const ejs = require('ejs');
>!
>! const app = express();
>!
>! app.use(bodyParser.urlencoded({
>! extended: true
>! }));
>! app.use(express.static("public"));
>! app.set('view engine', 'ejs');
>!
>! mongoose.connect("mongodb://127.0.0.1:27017/VidDb");
>!
>! const userSchema = new mongoose.Schema({
>! name:{
>! type:String,
>! required:true,
>! unique:true
>! },
>! email:{
>! type:String,
>! required:true,
>! unique:true
>! },
>! password:{
>! type:String,
>! required:true,
>! },
>! image:{
>! type:String,
>! },
>! },{timestamps:true});
>!
>! const User = mongoose.model("User",userSchema);
>!
>! const vidSchema = new mongoose.Schema({
>! vidName:{
>! type:String,
>! required:true,
>! unique:true
>! },
>! vidThumb:{
>! type:String,
>! required:true,
>! unique:true
>! },
>! vidLink:{
>! type:String,
>! required:true,
>! unique:true
>! },
>! likes:{
>! type:Number,
>! default:0
>! },
>! views:{
>! type:Number,
>! default:0
>! },
>! });
>!
>! const Vids = mongoose.model("Vid",vidSchema);
>!
>! app.get("/",function(req,res){
>! Vids.find().then(function(vids,err){
>! res.render("index",{
>! videos:vids
>! });
>! });
>! });
>!
>! app.get("/vids/:vidId",function(req,res){
>! const videoID = req.params.vidId;
>! Vids.findById(videoID).then(vid => {
>! res.render("vid",{
>! video:vid
>! });
>! });
>! });
>!
>! app.listen(3000,function(){
>! console.log("Server Started");
>! });
>!
>! `
视频:-
`<%- include('partials/header'); -%>
<!-- <video
id="my-video"
class="video-js"
controls
preload="auto"
width="640"
height="264"
poster="MY_VIDEO_POSTER.jpg"
data-setup="{}"
>
<source src="<%= video.vidLink %>" type="video/mp4" />
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a
web browser that
<a href="https://videojs.com/html5-video-support/" target="_blank"
>supports HTML5 video</a
>
</p>
</video> -->
<iframe width="1020" height="815" src= "<%= video.vidLink %>" ></iframe>
<script src="https://vjs.zencdn.net/8.0.4/video.min.js"></script>
<%- include('partials/footer'); -%>
`
我在控制台日志记录时得到了链接,但当试图将链接发送到ejs文件时,它不再工作了。
1条答案
按热度按时间balp4ylt1#
据我所知,你不能在ejs文件中传递var/link,对吗?
问题是您传递了错误的ejs文件路径,当您使用
res.render()
时,它试图查找文件路径,而您只是传递了名称。验证码:
更新代码:
此处:
*__目录名:我们使用它来定义目录路径,例如您的项目所在的目录。
*appUrl:用于API url。当您将代码推送到服务器中,并在ejs文件中传递任何文件路径时,将通过appUrl访问该文件。这是可选的。
注意:在呈现任何ejs模板时,请删除所有注解。有关详细信息,请访问this页面。
我用这个ejs:
数据:x1c 0d1x
输出: