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

また、ヘルパーをすべて 1 か所ではなく別のファイルで定義したい場合 (私ならそうします):

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 に答える