[英]TypeError: Handlebars.registerHelper is not a function
截至两天前,我对节点和车把还是全新的,所以请耐心等待。 我正在尝试使用自定义车把助手,但不完全确定将它放在哪里。
我不断收到“TypeError: Handlebars.registerHelper is not a function”
现在我在我的 server.js 文件中有它。 不确定这是否正确。
var express = require('express');
var app = express();
var Handlebars = require('express-handlebars');
app.engine('handlebars', Handlebars({
defaultLayout: 'main'
}));
app.set('view engine', 'handlebars');
Handlebars.registerHelper("if", function(conditional, options) {
if (options.hash.desired === options.hash.type) {
options.fn(this);
} else {
options.inverse(this);
}
});
根据此处找到的文档,您似乎需要像这样使用它: https : //github.com/ericf/express-handlebars
var hbs = Handlebars.create({
// Specify helpers which are only registered on this instance.
helpers: {
foo: function () { return 'FOO!'; },
bar: function () { return 'BAR!'; }
}
});
RA 卢卡斯是对的。
您从require('express-handlebars')
获得的对象不是任何“普通的旧把手对象”。 这是一个不同的对象,仅用于快速车把
您所做的是将您的助手(以及其他设置)传递给该对象的.create()
函数。
这是一个功能齐全的示例,我在 express-handlebars 中定义了 2 个助手
var express = require('express');
var exphbs = require('express-handlebars');
var app = express();
//Here you can pass helpers that you would normally define in registerHelpers
//and you can also define stuff like `defaultLayout` and `partialsDir`
var hbs = exphbs.create({
helpers: {
sayHello: function () { alert("Hello World") },
getStringifiedJson: function (value) {
return JSON.stringify(value);
}
},
defaultLayout: 'main',
partialsDir: ['views/partials/']
});
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
app.set('views', path.join(__dirname, 'views'));
刚刚遇到同样的问题。 感谢 RALucas 和 Drkawashima,上面的答案是正确的,但这里有一个稍短的选项。
var express = require('express');
var handlebars = require('express-handlebars');
var app = express();
app.engine('handlebars', handlebars({
helpers: {
sayHello: function () { return "Hello"; },
getStringifiedJson: function (value) {
return JSON.stringify(value);
}
},
partialsDir: ['views/partials/'],
defaultLayout: 'main'
}));
app.set('view engine', 'handlebars');
const {引擎} = require('express-handlebars'); ... app.engine('hbs',engine({...
这在我的情况下有效。
const {引擎} = require('express-handlebars');
app.engine('handlebars', engine({defaultLayout: 'main'}))
这对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.