EJS无法渲染

时间:2018-08-27 17:47:41

标签: javascript node.js express ejs

我只是用node.js上的EJS,Express.js制作了一个小型模板系统,但是渲染有点wtf ...

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而是呈现为文本...

预先感谢...

编辑:PS您可以在浏览器中看到模板代码,就像在文件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 :(得分:3)

标头内容类型不应为“文本/纯文本”。您可以为所有需要发送html的路由删除readme.md行。

请注意,响应已缓存,并且如果内容没有更改,但是标头更改了,您将看不到更改。

您可以使用res.setHeader('Content-Type', 'text/plain');来强制重新加载页面。

答案 1 :(得分:2)

从应该返回HTML的任何响应中删除res.setHeader('Content-Type', 'text/plain');行。

这样,浏览器将知道呈现它,而不是显示原始文本。