繁体   English   中英

Express res.render 没有渲染页面

[英]Express res.render is not rendering the page

我正在尝试从我的主站点获取输入。 提交输入后,页面应重定向到/view 它似乎成功重定向到/view (因为console.log()被触发,但res.render不工作。如果我手动转到/view ,它正在呈现页面。

这是我的app.js文件的代码:

// load the things we need
var express = require('express');
var app = express();
let bodyParser = require("body-parser");
let article = '';



//Set the view engine to ejs
app.set('view engine', 'ejs');
app.use('/static', express.static('static'))
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())



//Index page 
app.get('/', function (req, res) {
    res.render('index')
});

//Get the input from the form
app.post('/searcharticle', function (req, res) {
    article = req.body.article;
    res.redirect('/view')
    return article;
});
//Page to output the input
app.get('/view', function (req, res) {
    console.log(article)
    res.render('view', {
        article: article
    })
})

app.listen(8080);
console.log('Server on 8080');

这是我的文件夹结构

谢谢您的帮助!

首先使用视图引擎,然后设置使用它的目录。

 app.set('view engine', 'ejs');
 app.set('views', path.join(__dirname, 'views'));

并用于静态文件

app.use('/static',express.static(PATH.join(__dirname+'/static'));

你不得不提布局

app.get('/', function (req, res) {
    res.render('index',{layout:false})
});

假设您在 views 文件夹中有 al your.ejs 文件,请尝试在您的代码中添加这一行:

const path = require('path'); //npm install -S path in your console to install path. 

//Set the view engine to ejs
app.set('views', path.join(__dirname, 'views'));  // add this one, change 'views' for your folder name if needed.
app.set('view engine', 'ejs');
app.use('/static', express.static('static'))
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())

如果您从 diff 目录而不是静态目录运行服务器,则需要添加相对路径

app.use('/static', express.static(__dirname+'/static'))

我的好导师刚刚给了我一个非常相似的问题的解决方案。 登录表单“提交”被传递给 jQuery on('click') 并在经过身份验证后调用 API 调用结果的 Res.Render。 API 调用结果集已启用日志,但页面从未呈现,也没有错误。
他告诉我 jQuery 充当“影子”DOM,并且 Res.Render 同样发生在那个影子 DOM 中。 我将登录表单更改为 Post 表单,而不是 jQuery on Click。
那行得通。 我为此工作了好几天,从来没有想过 jQuery 会造成这种障碍。

我的方法是把ejs的版本退回到2.5.2,这样就可以了。 但是,我不知道为什么它不能支持版本 3 ..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM