2015-06-16 3 views
0

Я пытаюсь запустить пример Handlebars с помощью Node.js. Однако у меня возникают проблемы с регистрацией Handlebars. Я продолжаю получать ошибкиExpress 4 register handles

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); 

ответ

0

я тестировал некоторые возможные решения, но это один работает, как ожидалось:

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

+0

Есть ли способ, чтобы просто использовать Рулевое управление без использования модуля express3-handlebars? – Soubriquet

+0

Экспресс имеет некоторые хорошие функции, такие как прямая реализация Compass. Насколько Google показал, нет лучшего способа, извините, что я придерживаюсь выбора по умолчанию - Jade –