Javascript Express res.render未呈现页面
我正在尝试从我的主站点获取输入。提交输入后,页面应重定向到Javascript Express res.render未呈现页面,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我正在尝试从我的主站点获取输入。提交输入后,页面应重定向到/view。它似乎成功地重定向到了/view(因为控制台.log()正在被触发,但是res.render不工作。如果我手动转到/view它正在呈现页面 下面是我的app.js文件的代码: // load the things we need var express = require('express'); var app = express(); let bodyParser = require("body-parser"); let
/view
。它似乎成功地重定向到了/view
(因为控制台.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');
这是我的
谢谢您的帮助!假设您在“视图”文件夹中有所有.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目录而非static目录运行服务器,则需要添加相对路径
app.use('/static',express.static(\uu dirname+'/static'))首先使用视图引擎,然后设置使用它的目录
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
对于静态文件使用
app.use('/static',express.static(PATH.join(__dirname+'/static'));
我的优秀导师刚刚为我提供了一个非常类似的问题的解决方案。登录表单“提交”在('click')上传递给jQuery,并在授权后调用了API调用结果的Res.Render。API调用结果集已启用日志功能,但页面从未呈现,并且没有错误。
他告诉我jQuery充当一个“影子”DOM,Res.Render也同样发生在这个影子DOM中。我将登录表单改为表单Post,而不是单击jQuery。
成功了!
我为此工作了好几天,从未想过jQuery会造成这种障碍。您必须提到布局
app.get('/', function (req, res) {
res.render('index',{layout:false})
});
有错误吗?没有没有错误输出@mehta Rohanned要查看您的文件夹结构我将文件夹结构添加到问题@mehta RohannRelated:您的代码中有一个竞态条件,因为您全局存储
文章
。请求特定的数据不属于全局范围。例如,您可以存储req.body.article
将其保存在会话、文件系统或数据库中。或者直接将其保存在POST处理程序中(由于返回值已被丢弃,因此也无需从中返回任何内容)。我添加了行,但它仍然不起作用。我得到了相同的结果。您可以共享文件夹结构吗?问题可能在app.set('views',…)中我在问题的底部添加了一个指向结构的链接,但是css正在工作,所以静态文件应该没有问题。我猜我只是在应用程序中遇到了这个错误。使用静态文件的:TypeError:Router.use()需要一个中间件函数,但得到了一个字符串。它真的需要那个应用程序吗。用于这样的静态文件吗?我对css文件没有问题。很抱歉,我忘记了使用express static