2016-08-01 17 views
0

hey kluge Leute, die mir helfen wollen!nodejs Lenker Fehler TypeError: this.set ist keine Funktion

im a NodeJS Anfänger, und ich will Lenker als mein Template-Engine verwenden ... diese Anwendung meine erste NodeJS ist, folge ich diese Anleitung: https://www.youtube.com/watch?v=m5ribwPpIPw

i cloud9 wie mein ide verwenden ..

ich habe nur eine js sein wirklich alles file:

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

 
app.engine = ('handlebars', hbs({defaultLayout: 'layout'})); 
 
app.set = ('view engine', 'handlebars'); 
 

 
app.get('/', function (req,res){ 
 
    res.render('index'); 
 
}); 
 

 
app.use('/views',express.static('views')); 
 

 
app.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0");

im tut alles, was der Führer mich zu tun refernce zu ... this is my folder tree:

Update: Das ist der Fehler, die ich bekommen .. vergessen, es zu setzen hier:

/home/ubuntu/Arbeitsbereich/node_modules/express/lib/application.js: 421 return Boolesch (this.set (setting)); ^

Typeerror: this.set ist keine Funktion bei EventEmitter.enabled (/home/ubuntu/workspace/node_modules/express/lib/application.js:421:23) bei EventEmitter.lazyrouter (/ home /ubuntu/workspace/node_modules/express/lib/application.js:139:27) bei EventEmitter.methods.forEach.app. (anonyme Funktion) [as get] (/ home/ubuntu/workspace/node_modules/express/lib /application.js:478:10) bei Object. (/home/ubuntu/workspace/server.js:8:5) bei Module._compile (module.js: 409: 26) bei Object.Module._extensions..js (module.js: 416: 10) bei Module.load (module.js: 343: 32) bei Function.Module._load (module.js: 300: 12) bei Module.runMain [als _onTimeout] (module.js: 441: 10) bei Timer .listOnTimeout (timers.js: 92: 15)

Antwort

2

Fix diese Zeilen:

app.engine('handlebars', hbs({defaultLayout: 'layout'})); 
app.set('view engine', 'handlebars'); 

Und zum anderen ändern layout.hbs-layout.handlerbars

+0

hey danke Ihnen sehr für das Helfen ich .. ich die .hbs fest, aber es ist nicht das Problem .. Ich weiß, ich habe Probleme mit meinem Template-Engine Bezug, aber es ist eigentlich die gleiche wie die der meine Guide hat .. und es funktioniert für ihn .. können Sie genauer auf was zu beheben? – GevAlter

+0

@GevAlter Hast du die Zeile repariert, die ich in meiner Antwort erwähnt habe? –

+0

fühle mich schade ... danke mann – GevAlter

0

FYI - "Express3-Lenker" wurde in "Express-Lenker" geändert. Vielleicht möchten Sie das aktualisieren. Siehe here.

Auch wenn Sie Ihre Layouts mit einer .hbs-Erweiterung benennen möchten, können Sie.

app.engine = ('handlebars', hbs({ defaultLayout: 'layout' , extname: '.hbs'})); 
app.set = ('view engine', 'handlebars');