把手 registerHelper 错误:registerHelper 不是函数

1 node.js handlebars.js registerhelper

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

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

代码:

    exphbs.registerHelper("hlp", function(num) {
      num = num.toString();
      return "(" + num + ") ";
    });
Run Code Online (Sandbox Code Playgroud)

Tom*_*ara 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');
Run Code Online (Sandbox Code Playgroud)

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

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

foo.js:

module.exports = function () { return 'FOO!'; }
Run Code Online (Sandbox Code Playgroud)