Express res.render не отображает страницу - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь получить информацию с моего основного сайта. После отправки ввода страница должна перенаправиться на /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');

А вот мой структура папок

Спасибо за помощь!

Ответы [ 4 ]

0 голосов
/ 10 июля 2019

Мой замечательный преподаватель только что дал мне решение очень похожей проблемы. Форма входа в систему 'submit' была передана в jQuery ('click') и после аутентификации вызвала Res.Render результатов вызова API. Набор результатов вызова API был в состоянии журнала, но страница никогда не отображалась, и не было ошибки.
Он сказал мне, что jQuery действует как «теневой» DOM, и что Res.Render также находится в этом теневом DOM. Я изменил форму входа на форму «Отправить» вместо jQuery on Click.
Это работало! Я работал над этим в течение нескольких дней, не думая, что jQuery может стать причиной этого препятствия.

0 голосов
/ 30 августа 2018

Если вы используете сервер из каталога diff, отличного от static, вам нужно добавить относительный путь

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

0 голосов
/ 30 августа 2018

сначала используйте view engine, а затем укажите каталог, где его использовать.

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

и для статических файлов используйте

app.use('/static',express.static(PATH.join(__dirname+'/static'));
0 голосов
/ 30 августа 2018

предполагается, что у вас есть все ваши файлы .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())
...