车把说它错过了帮手?

时间:2018-02-14 00:04:47

标签: express handlebars.js

我试图从快递手动服务器端渲染手柄模板。

//get handlebars
var hbs = require('hbs').create({
  svg: require('handlebars-helper-svg'),
  switch: require('../helpers/switch.js'),
  case: require('../helpers/case.js'),
});

console.log(hbs)

//convert each entry to HTML via handlebars
var resultsHtml = results.map(function (tutorial) {
  var template = require('../views/list-item.hbs');
  template = hbs.compile(template);

  return template(tutorial);
});

hbs的日志给出了这个:

Instance {
  handlebars: 
   { svg: { [Function] cache: {} },
     switch: [Function],
     case: [Function] },
  cache: {},
  __express: [Function: bound middleware],
  SafeString: undefined,
  Utils: undefined }

这似乎有3个助手,但它不断吐出错误

Error: Missing helper: "svg"

除非我从模板中删除所有SVG。

我在app.js中的主应用程序中使用了这个帮助程序,如下所示:

var svg = require('handlebars-helper-svg');
hbs.registerHelper('svg', svg);

但无论如何,这在我的路线中都不起作用。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题不在于助手,而在于模板。要求是javascript文件,并且必须在其中调用modules.export。对于其他文件,您需要使用filesystem对象来读取文件:

fs.readFileSync('./views/list-item.hbs', 'utf8')