1

当我尝试在 node.js 文件中注册把手助手时,我收到错误消息:

exphbs.registerHelper("hlp", function(num) { TypeError: exphbs.registerHelper 不是函数

代码:

    exphbs.registerHelper("hlp", function(num) {
      num = num.toString();
      return "(" + num + ") ";
    });
4

1 回答 1

5

重要的是要注意您正在使用express-handlebars,这是一个允许在 express 中使用把手作为视图引擎的插件。所以你得到的对象require('express-handlebars')不会是一个Handlebars实例。

好消息是您仍然可以设置助手。该模块的文档有一个示例

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

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

如果你想在单独的文件中定义你的助手,而不是在一个地方(我会):

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

foo.js:

module.exports = function () { return 'FOO!'; }
于 2016-07-20T21:06:40.240 回答