Express res.render无法呈现页面

时间:2018-08-30 07:56:29

标签: javascript node.js express ejs

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

这是我的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');

这是我的 folder structure

谢谢您的帮助!

5 个答案:

答案 0 :(得分:0)

假设您在views文件夹中有.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())

答案 1 :(得分:0)

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

app.use('/ static',express.static(__ dirname +'/ static'))

答案 2 :(得分:0)

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

t useful,the error "user not login". i  google but don

,对于静态文件,请使用

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

答案 3 :(得分:0)

我的出色导师给了我一个非常相似的问题的解决方案。登录表单“提交”已传递给jQuery on('click'),并在身份验证后调用了API调用结果的Res.Render。该API调用结果集是可记录日志的,但是该页面从未呈现过,并且没有错误。
他告诉我jQuery充当“影子” DOM,而Res.Render同样也发生在该影子DOM中。我将登录表单更改为Post表单,而不是Click上的jQuery。
做到了! 我花了几天的时间才想到jQuery可能会造成障碍。

答案 4 :(得分:0)

你必须提到布局

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