express-handlebars助手不显示返回值

时间:2019-05-16 13:22:24

标签: express express-handlebars handlebarshelper

我尝试注册自己的帮助器方法来表达车把,以便在视图和局部视图中使用它。我的目标是在我的导航部分中创建一个用于搜索的功能。但是我什至没有让我的助手在索引视图上工作。

我做了很多思考。

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”无关紧要,

我也尝试使用foo和bar helper从https://github.com/ericf/express-handlebars中实现给定的示例(不使用require()导入它们,我确实做了同样的事情),但是它对我不起作用。它永远不会显示任何返回值。

你们有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Vivasaayi的回答对我有用! can't register handlebar helpers 只需使用以下代码

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);