2013-01-15 11 views
6

Próbujesz użyć kierownicy z nodejs i otrzymuję ten błąd "TypeError: Object function app (req, res) {app.handle (req, res);} nie ma metody" register "". Poniżej znajduje się kod dla nodejs. Wygląda na to, że ten sam kod zadziałał dla innych ludzi, ponieważ jest to raczej kopiuj wklej NodeJS + Express + Handlebars - failed to locate view "index.html". P.S. Jestem nowy dla nodejs i próbuję go wyczuć i jestem już przyzwyczajony do kierownic.TypeError: Object function app (req, res) {app.handle (req, res); } nie ma metody "zarejestruj się"

//Load Modules 
var express = require('express'); 
var handlebars = require('handlebars'); 

var app = express(); 

// Configuration 
app.configure(function() { 
    app.register('.html', handlebars); 
    app.set('views', __dirname + '/'); 
    app.set('view engine', 'handlebars'); 
    app.set("view options", { layout: false });  
}); 

// Routes 
app.get('/:first/:last', function(req, res) { 
    var data = {title:req.param.first + " " + req.param.last}; 
    res.render("template/profilecard.html", data); 
}); 

app.listen(3000); 

console.log("NodeJS Server Started"); 

Odpowiedz

6

Express 3.0 zmienił aplikację app.register na app.engine. Migrating to Express.js 3.0

Some template engines do not follow this convention, the consolidate.js library was created to map all of node's popular template engines to follow this convention, thus allowing them to work seemlessly within Express.

npm zainstalować konsolidować

Spróbuj wykonać następujące czynności:

var engines = require('consolidate'); 

app.configure(function() { 

    app.set('views', __dirname + '/'); 
    app.set('view engine', 'handlebars'); 
    app.set("view options", { layout: false }); 
    app.engine('.html', engines.handlebars); 
}); 
+1

Nie używać kierownicę, ale widzę, że jest https://github.com/donpark/hbs. To może być lepsze rozwiązanie. app.set ("widok silnika", "hbs"); i app.engine ('html', require ('hbs') .__ express); – thtsigma

+0

Twoja odpowiedź nie działa, nie może znaleźć pliku, ale nie spowodowała błędu, ale komentarz, który opuściłeś, działa (naprawiłam to wcześniej i nie byłam w stanie odpowiedzieć na to pytanie, ponieważ do tej pory nie miałem połączenia z internetem). W każdym razie dzięki! – Charles

+2

tak naprawdę to działa, po prostu potrzebne rozszerzenie pliku na nazwę pliku, w odróżnieniu od kiedy używam hbs. – Charles

Powiązane problemy