被作为未加工的html被回报的把手模板

时间:2017-03-12 18:53:56

标签: javascript node.js express handlebars.js

我正在尝试使用节点和把手运行一个简单的页面,但页面无法正确呈现。当我转到http://localhost:8080/时,我只是在浏览器中获取原始HTML文本。这是我的代码:

main.js

var express = require('express');
var app = express();

var handlebars = require('express-handlebars').create({defaultLayout:'main'});
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');

app.set('port', 8080);

app.get('/',function(req,res){
    res.type('text/plain');
    res.render('home');
});

app.listen(app.get('port'), function(){
    console.log('Express started on http://localhost:' + app.get('port') + '; press Ctrl-C to terminate.');
});

home.handlebars

<h1>The Home Page</h1>

main.handlebars

<!doctype html>
<html>
<head>
    <title>Demo Page</title>
</head>
<body>
    {{{body}}}
</body>
</html>

我在NetBeans中运行它,但即使我尝试通过命令行执行此操作,结果也是一样。

编辑:即使是奇怪的,它在Firefox中也很好,但在IE或Chrome中却没有。

编辑2:更奇怪。如果我将端口更改为其他内容,Firefox将停止正确呈现。 Firefox仅在其端口8080时正确呈现。

EDIT3:这是我所看到的图像: enter image description here

EDIT4:我对main.handlebars进行了更改,保存,测试了它,解除了更改并再次保存(因此它恢复到原始状态),现在Firefox也不会渲染。

EDIT5:它现在似乎正在工作,我完全不知道为什么。如果有人想仔细看看,我将文件保存在这里:https://github.com/tliss/ExerciseApp

2 个答案:

答案 0 :(得分:0)

删除res.type('text/plain');并重新启动服务器并清除浏览器缓存(在Chrome上,您可以使用 ctrl + F5 )。

答案 1 :(得分:0)

快递车把模板有同样的问题,请尝试

  • 将花括号改为三倍,而不是使用double
  • 清除缓存
  • 删除res.type()
  • 使用这两行来设置视图引擎

app.engine('handlebars', exphbs({defaultLayout: 'main'})); app.set('view engine', 'handlebars');