Узел js: как зарегистрировать помощника с помощью экспресс-руля? - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь зарегистрировать помощника с помощью «express-handlebars», но получаю ошибку «expbs.registerHelper не является функцией».

Мой код:

const express = require('express');
const app = express();
const expbs = require('express-handlebars');
const path = require('path');

var paginate = require('handlebars-paginate');
expbs.registerHelper('paginate', paginate);

const routes = require('./routes/handlers');

app.use(express.static('public'));  

const hbs = expbs.create({
    defaultLayout: 'main',
    layoutsDir: path.join(__dirname, 'views/mainLayout'), 
    partialsDir: path.join(__dirname, 'views/pieces'), 
    helpers: {
        calculation: function(value) {
            return value * 5;
        },
        list: function(value, options) {
            let out = "<ul>";
            for (let i = 0; i < value.length; i++) {
                out = out + "<li>" +  options.fn(value[i]) + "</li>";
            }
            return out + "</ul>";
        }
    }
});

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

app.use('/route1', routes);

app.listen(8080, () => {
    console.log('Server is starting at port ', 8080);
});

Как можноя регистрирую помощника с экспресс-рулем?

1 Ответ

0 голосов
/ 08 июня 2019

Как говорит ошибка: expbs.registerHelper не является функцией в экспресс-руле.Вы путаете с пакетом "руль".registerhelper - это метод в руле.

express-handlebars и handlebars - это два разных пакета.Я также запутал их, когда начал изучать Node.js.Я установил рули, но я пытался использовать методы экспресс-рулей :)

Ваша установка верна.Вот как вы должны вызывать

{{calculation 20}} //20 is the argument

Каждый раз, когда вы создаете пользовательский помощник, вы должны указать значение.

...