我正在尝试从我的主站点获得输入。提交输入后,页面应重定向到/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
谢谢您的帮助!
答案 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})
});