EJS не рендеринг - PullRequest
       11

EJS не рендеринг

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

Я просто создаю небольшую систему шаблонов с EJS, Express.js на node.js, но рендеринг немного сложный ...

here the render

А вот код моего server.js:

var fs = require('fs');
var http = require('http');
var https = require('https');
//var privateKey  = fs.readFileSync('sslcert/server.key', 'utf8');
//var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');

//var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var app = express();

app.set('view engine', 'ejs');

//Here the config of page
app.get('/', function(req, res){
    //Accueil -> redirection vers un chat aléatoire
            res.setHeader('Content-Type', 'text/plain');
        res.status(500).send('Test !');
});

app.get('/about', function(req, res){
            res.setHeader('Content-Type', 'text/plain');
        res.status(500).send('Test !');
});

app.get('/auth/login', function(req,res){
            res.setHeader('Content-Type', 'text/plain');
        res.status(500).send('Test !');
});


app.get('/auth/register', function(req,res){
            res.setHeader('Content-Type', 'text/plain');
        res.status(500).send('Test !');
});

app.get('/chat', function(req,res){
    res.setHeader('Content-Type', 'text/plain');
    res.render('redirect.ejs', {});
})

app.get('/chat/:chatnum', function(req,res){
    if(parseInt(req.params.chatnum, 10) < 101){
        res.setHeader('Content-Type', 'text/plain');
        res.status(500).send('Test !' + req.params.chatnum);
    }
    else {
        res.setHeader('Content-Type', 'text/plain');
        res.status(404).send('Page introuvable !!');
    }        
});

app.use(function(req, res, next){
    res.setHeader('Content-Type', 'text/plain');
    res.status(404).send('Page introuvable !');
});

var httpServer = http.createServer(app);
//var httpsServer = https.createServer(credentials, app);

httpServer.listen(8080);
//httpsServer.listen(8443);

(сейчас я отключил https)

Так что, если кто-то знает, почему он не отображает html как html, а как текст ...

Заранее спасибо ...

РЕДАКТИРОВАТЬ: P.S. Вы можете увидеть код шаблона в браузере как он есть в файле redirecting.ejs РЕДАКТИРОВАТЬ 2: добавление формата кода для redirect.ejs

<!DOCTYPE html>
<html>

    <head>

        <title>Redirecting...</title>

    </head>

    <body>

    <h1 style="text-align: center">Redirecting...</h1>

    <script>window.location.href = "/ + " (Math.random().trunc() * 100) + 1</script>    

    </body>

</html>

Ответы [ 2 ]

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

тип содержимого заголовка не должен быть "text / plain". Вы можете удалить строку res.setHeader('Content-Type', 'text/plain'); для всех маршрутов, которым необходимо отправить html.

Имейте в виду, что ответ кэшируется, и если содержимое не изменяется, а заголовок изменяется, вы не увидите изменения.

Вы можете использовать ctrl+F5 для принудительной перезагрузки вашей страницы.

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

Удалите строку res.setHeader('Content-Type', 'text/plain'); из любого ответа, который должен возвращать HTML.

Таким образом, браузер будет знать, как отображать его, а не отображать необработанный текст.

...