2016-09-29 16 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

関連する問題