Express 4 套准车把

Express 4 register handlebars

我正在尝试 运行 使用 Node.js 的 Handlebars 示例。但是,我在注册 Handlebars 时遇到了问题。我一直收到错误

Error: callback function required at line 7.

var express     = require('express');
var app         = express();
var port        = process.env.PORT || 8888;
var router      = express.Router();  

app.set('view engine', 'html');
app.engine('html', require('handlebars').__express);

router.get('/', function(req, res) 
{
    console.log("REACHG");
    var source = "<p>Hello, my name is {{name}}. I am from {{hometown}}. I have " +
                 "{{kids.length}} kids:</p>" +
                 "<ul>{{#kids}}<li>{{name}} is {{age}}</li>{{/kids}}</ul>";
    var template = Handlebars.compile(source);

    var data = { "name": "Alan", "hometown": "Somewhere, TX",
                 "kids": [{"name": "Jimmy", "age": "12"}, {"name": "Sally", "age": "4"}]};
    var html = template(data);

    res.render(html);
});

app.use('/', router);

app.listen(port);
console.log('listening to port '+port);

我测试了一些可能的解决方案,但这个解决方案按预期工作:

var express = require('express');
var app = express();
var expressHbs = require('express3-handlebars');

app.engine('hbs', expressHbs({extname:'hbs', defaultLayout:'main.hbs'}));
app.set('view engine', 'hbs');

app.get('/', function(req, res){
var data = {name: 'Gorilla'};
res.render('simple', data);
});
app.listen(80);
//--||--||--||--||--||--||--||--||--||
simple.hbs
Showing <em>name</em> 
//--||--||--||--||--||--||--||--||--||
main.hbs
 <head>
 <title>Handlebars examples with Express 4</title>
 </head>
 <body>
 {{{body}}}
 </body>
 </html>

来源:http://code.runnable.com/U07z_Y_j9rZk1tTx/handlebars-template-examples-with-express-4-for-node-js