Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express res.render未呈现页面_Javascript_Node.js_Express_Ejs - Fatal编程技术网

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