помощник express-handlebars не отображает возвращаемое значение - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь зарегистрировать свои собственные вспомогательные методы для выражений-рулей, чтобы использовать их в представлениях и частичках.Моя цель - создать функцию поиска в моей части навигации.Но я даже не заставляю своего помощника работать с моим представлением индекса.

Я много думал ...

App.js

const exphbs = require('express-handlebars')
const helpers = require('./public/helper/hbs-helper');
const express = require('express')
const app = express()

const hbs = exphbs.create({
  layoutsDir: path.join(__dirname, 'views/layouts'),
  partialsDir: path.join(__dirname, 'views/partials'),
  helpers: helpers
})

app.enable('trust proxy')
app.engine('handlebars', hbs.engine)
app.engine('.hbs', exphbs({
  extname: '.hbs'
}))
app.set('view engine', 'handlebars')
app.set('views', path.join(__dirname, 'views'))

hbs-helper.js

module.exports = {
  sayHello: function(elem) {
    return 'hello!'
  }
}

index.hbs - здесь я попробовал все, но не одновременно;):

<p>{{sayHello}}</p>
<p>{{#sayHello}}</p>
<p>{{sayHello this}}</p>
  • Первый дает мне пустой p-тег
  • Второй говорит: «Ошибка: ошибка разбора в строке ...»
  • Третий говорит: «Ошибка: отсутствует помощник:« sayHello »»

Не имеет значения, еслипоместите "elem" в определение функции, оно все еще не работает.

Я также попытался реализовать данный пример из https://github.com/ericf/express-handlebars с помощью foo и bar helper (не импортируя их с помощью require (), ядействительно сделал то же самое), но это не работает для меня.Он никогда не отображает никаких возвращаемых значений.

У вас, ребята, есть идеи?

1 Ответ

0 голосов
/ 23 мая 2019

Ответ от Вивасайи работал на меня! не может зарегистрировать помощников на руле Просто используйте следующий код

helpers.js

let register = function(Handlebars) {
let helpers = {
sayHello: function(elem) {
  return 'hello!'
  }
};
if (Handlebars && typeof Handlebars.registerHelper === "function") {
  for (let prop in helpers) {
    Handlebars.registerHelper(prop, helpers[prop]);
  }
} else {
  return helpers;
}
};
module.exports.register = register;

app.js

const exphbs = require('express-handlebars')
const hbs = exphbs.create({
  layoutsDir: path.join(__dirname, 'views/layouts'),
  partialsDir: path.join(__dirname, 'views/partials')
})
require("./pathto/helper.js").register(hbs.handlebars);
...