2016-07-20 19 views
0

Wenn ich versuche, einen Lenker Helfer in einer node.js-Datei zu registrieren, erhalte ich die Fehlermeldung:Lenker register Fehler: register ist keine Funktion

exphbs.registerHelper("hlp", function(num) { TypeError: exphbs.registerHelper is not a function

Code:

exphbs.registerHelper("hlp", function(num) { 
     num = num.toString(); 
     return "(" + num + ") "; 
    }); 
+0

Können Sie uns zeigen, wie Sie in der Lenkerbibliothek benötigen? 'typeof require ('lenker'). registerHelper gibt' function' für mich zurück. –

+0

var exphbs = require ('Express-Lenker'); – Dariush

Antwort

3

Es ist wichtig zu beachten, dass Sie express-handlebars verwenden, ein Plug-in, das die Verwendung von Lenkern als View-Engine in Express ermöglicht. Das Objekt, das Sie von require('express-handlebars') erhalten, ist also keine Handlebars Instanz.

Die gute Nachricht ist, dass Sie immer noch Helfer einrichten können. Die Dokumentation für das Modul hat an example:

var hbs = exphbs.create({ 
    // Specify helpers which are only registered on this instance. 
    helpers: { 
    foo: function() { return 'FOO!'; }, 
    bar: function() { return 'BAR!'; } 
    } 
}); 

app.engine('handlebars', hbs.engine); 
app.set('view engine', 'handlebars'); 

Und wenn Sie möchten, dass Ihre Helfer in separaten Dateien definieren, anstatt alle in diesem einen Ort (ich würde):

var hbs = exphbs.create({ 
    // Specify helpers which are only registered on this instance. 
    helpers: { 
    foo: require('./helpers/foo'), 
    bar: require('./helpers/bar') 
    } 
}); 

foo.js:

module.exports = function() { return 'FOO!'; } 
+0

Vielen Dank, ich sehe den Punkt. soll ich alle meine Helfer im Projekt an dieser Stelle definieren? Oder kann ich meine Helfer separat in verschiedenen js-Dateien definieren? – Dariush

+0

Sie könnten sie in verschiedenen Dateien definieren und importieren. Meine Antwort wurde aktualisiert. –