gpt4 book ai didi

javascript - 在 Node js 应用程序中使用句柄时,将 TypeError 作为 registerHelper 不是一个函数

转载 作者:行者123 更新时间:2023-12-03 05:08:22 25 4
gpt4 key购买 nike

我的 Node js 应用程序具有以下代码,其中我尝试注册一个 Handlebars if-else 逻辑,以便在我的模板文件中使用它。然而,它抛出错误“TypeError:hbs.registerHelper 不是函数”。谁能指出我所犯的错误,并建议如何注册 if - elseif -else 逻辑来执行相等(或比较)检查,以在我的模板中构建决策逻辑?

package.json中的express-handlebars版本是3.0.0

var exp = require('express');
var pth = require('path');
var fcon = require('serve-favicon');
var logger = require('morgan');
var cp = require('cookie-parser');
var bp = require('body-parser');
var exphbs = require('express-handlebars');

var index = require('./routes/index');

var app = express();

exphbs.registerHelper("if", function(conditional, options) {
if (options.hash.desired === options.hash.type) {
options.fn(this);
} else {
options.inverse(this);
}
});

// view engine setup
app.engine('hbs', exphbs({extname: 'hbs', defaultLayout: 'layout', layoutsDir: __dirname + '/views/mylayouts/'}));
app.set('views', pth.join(__dirname, 'views'));
app.set('view engine', 'hbs');

最佳答案

助手只能注册为express-handlebars实例:

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

或者如果您想动态注册它们。您可以像这样使用实例引用:

hbs.handlebars.registerHelper("superHelper", () => 42);

更进一步,您可能希望在渲染级别覆盖助手。你可以这样做:

app.get('/', function (req, res, next) {
res.render('home', {
showTitle: true,

// Override `foo` helper only for this rendering.
helpers: {
foo: function () { return 'foo.'; }
}
});
});

来源:projects github page

编辑:

添加 if 帮助器:

app.engine('hbs', exphbs({
extname: 'hbs',
defaultLayout: 'layout',
layoutsDir: __dirname + '/views/mylayouts/',
helpers: {
if: function(conditional, options) {
if (options.hash.desired === options.hash.type) {
options.fn(this);
} else {
options.inverse(this);
}
}
}
}));

关于javascript - 在 Node js 应用程序中使用句柄时,将 TypeError 作为 registerHelper 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com