我试图从快递手动服务器端渲染手柄模板。
//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);
但无论如何,这在我的路线中都不起作用。
我做错了什么?
答案 0 :(得分:0)
问题不在于助手,而在于模板。要求是javascript文件,并且必须在其中调用modules.export。对于其他文件,您需要使用filesystem对象来读取文件:
fs.readFileSync('./views/list-item.hbs', 'utf8')