/ / nie można zarejestrować pomocników handlebar - node.js, handlebars.js, handlebarshelper, express-handlebars

nie można zarejestrować pomocników kierownicy - node.js, handlebars.js, handlebarshelper, express-handlebars

Mam problem z zarejestrowaniem niestandardowego pomocnika w kierownicy. Próbowałem wszystkiego, co mogłem znaleźć, ale nic nie działa.

Oto, co mam w app.js

const express= require("express");
const exphbs  = require("express-handlebars");
var socket = require("socket.io")
const app=express();
const querystring = require("querystring");

var hbs = exphbs.create({
extname: ".hbs",
defaultLayout: "default",
layoutsDir: "./lib/templates/layouts",
partialsDir: "./lib/templates/partials",
helpers: require("./helpers/handlebars.js").helpers
});

app.engine("hbs", hbs.engine);

//Handlebars Middleware
app.engine("handlebars", exphbs({defaultLayout: "main"}));
app.set("view engine", "handlebars");
app.use(express.static("public"));

i mam w helpers / handlebars.js ten kod:

var register = function (Handlebars) {
var helpers = {
formatCurrency: function (currency) {
return currency.toString().replace(/(d)(?=(ddd)+(?!d))/g, "$1,");
},
format_date: function (date, format) {
return moment(date).format(format);
}
};

if (Handlebars && typeof Handlebars.registerHelper === "function") {
for (var prop in helpers) {
Handlebars.registerHelper(prop, helpers[prop]);
}
} else {
return helpers;
}

};

module.exports.register = register;
module.exports.helpers = register(null);

(który jest przykładem, który znalazłem online)

Kiedy jednak przejdę do mojego poglądu i spróbuję zadzwonić do tego pomocnika:

{{formatCurrency settings.Ngames}}

Otrzymuję ten błąd:

Error: Missing helper: "formatCurrency"

Próbowałem również użyć w Handlebars.register w app.js, ale nie rozpoznaje Handlebars.

Co ja robię źle? Jak mogę zarejestrować pomocników?

Dziękuję Ci!

Odpowiedzi:

0 dla odpowiedzi № 1

Powinieneś zarejestrować pomocników Handlebar.

Publikowanie mojego pełnego kodu:

const express = require("express");
const exphbs = require("express-handlebars");

const app = express();

var hbs = exphbs.create({
extname: ".hbs",
defaultLayout: "default",
layoutsDir: "./lib/templates/layouts",
partialsDir: "./lib/templates/partials"
});

require("./helpers/handlebars").register(hbs.handlebars);

app.engine("hbs", hbs.engine);

//Handlebars Middleware
app.engine("handlebars", exphbs({ defaultLayout: "main" }));
app.set("view engine", "handlebars");
app.use(express.static("public"));

const router = express.Router();

router.get("/hello", function (req, res) {
res.render("index", { layout: false });
});

app.use(router);
app.listen(8080);

Plik pomocy:

var register = function (Handlebars) {
var helpers = {
formatCurrency: function (currency) {
return currency.toString().replace(/(d)(?=(ddd)+(?!d))/g, "$1,");
},
format_date: function (date, format) {
return moment(date).format(format);
}
};

if (Handlebars && typeof Handlebars.registerHelper === "function") {
for (var prop in helpers) {
Handlebars.registerHelper(prop, helpers[prop]);
}
} else {
return helpers;
}

};

module.exports.register = register;