2016-09-29 43 views
0

我正在运行一些Gulp任务,并使用html模板的handlebars.js,但我努力得到帮助函数从外部js文件工作... documentation here不真正解释外部文件应该如何显示,所以我希望有人能帮助我。handlebars.js的外部帮手文件

这里就是我有

/**** gulpfile.js ****/ 
 

 
var gulp = require('gulp'); 
 
var hb = require('gulp-hb'); 
 

 
gulp.task('default', function() { 
 
    return gulp 
 
     .src('./src/{,posts/}*.html') 
 
     .pipe(hb({ 
 
      partials: './src/assets/partials/**/*.hbs', 
 
      helpers: './src/assets/helpers/*.js', 
 
      data: { 
 
       people: [ 
 
       {firstName: "Yehuda", lastName: "Katz"}, 
 
       {firstName: "Carl", lastName: "Lerche"}, 
 
       {firstName: "Alan", lastName: "Johnson"} 
 
       ] 
 
      } 
 
     })) 
 
     .pipe(gulp.dest('./web')); 
 
}); 
 

 
/**** External js file .../helpers/helpers.js ****/ 
 

 
Handlebars.registerHelper('list', function(items, options) { 
 
    var out = "<ul>"; 
 

 
    for(var i=0, l=items.length; i<l; i++) { 
 
    out = out + "<li>" + options.fn(items[i]) + "</li>"; 
 
    } 
 

 
    return out + "</ul>"; 
 
});
<!-- Handlebars html template --> 
 
{{#list people}}{{firstName}} {{lastName}}{{/list}}

芽出来的错误信息:

[14:10:13] ReferenceError: Handlebars is not defined 
at Object.<anonymous> (/Applications/MAMP/htdocs/helpers/src/assets/helpers/helpers.js:1:63) 
at Module._compile (module.js:409:26) 
at Object.Module._extensions..js (module.js:416:10) 
at Module.load (module.js:343:32) 
at Function.Module._load (module.js:300:12) 
at Module.require (module.js:353:17) 
at require (internal/module.js:12:17) 
at mapper (/Applications/MAMP/htdocs/helpers/node_modules/gulp-hb/node_modules/handlebars-wax/node_modules/require-glob/src/require-glob.js:51:12) 
at Array.map (native) 
at mapReduce (/Applications/MAMP/htdocs/helpers/node_modules/gulp-hb/node_modules/handlebars-wax/node_modules/require-glob/src/require-glob.js:87:4) 

回答

1

更新 对不起,我应该在文档更仔细地看着。

您应该添加功能佣工财产对象传递给

hb({ 
    helpers:{ 
     list: function(){} 
    } 
}) 

或者,如果你传递一个路径助手文件,与功能你只是出口对象,所以你并不需要获得在车把所有。

//helpers.js 
module.exports = { 
     list: function(){} 
}; 

错误 需要导入吞气-HB模块,并使用它的属性车把

var HandleBars = require('gulp-hb').handlebars; 

HandleBars.registerHelper(...); 
+0

部屋Molda,感谢堆的帮助......现在它拍摄出“错误:缺少帮手:‘清单’ – WillW

+0

@WillW抱歉,我已经更新了我的答案 – Molda

+0

嘿@Molda,一个大感谢如果我问你是否找到了文档? – WillW