带把手装载机的定制帮手

时间:2018-07-09 20:56:03

标签: helper webpack-4 webpack-handlebars-loader

我正在将此handlebars-loader用于Webpack4。现在,我想使用自定义帮助程序,但我只会遇到此错误

  

模板执行中的错误失败:TypeError:__default(...)。call不是函数

     

TypeError中的错误:__default(...)。call不是函数

这是我的webpack.config

//handlebars-loader
{
  test: /\.(hbs)$/,
  loader: "handlebars-loader",
  options: {
    helperDirs: [path.join(__dirname, './src/hbs/helpers')],
    partialDirs: [path.join(__dirname, './src/hbs/partials')]
  },
}

这是我的简单帮手

const Handlebars = require('handlebars');
Handlebars.registerHelper('repeat', function(n) {
  console.log(n);
});

以及我的使用方式

{{#repeat 10}}
    <span> repeat</span>
{{/repeat}}   

有人知道我在做什么错吗?

2 个答案:

答案 0 :(得分:1)

谢谢,格雷戈尔!这整天让我感到沮丧!

我在帮助文件checkActive.js中有一个简单的功能:

const Handlebars = require("handlebars")

Handlebars.registerHelper("checkActive", function (pageName, linkedPageName) {
  return pageName === linkedPageName ? "active" : ""
})

这行不通,并给了我这个错误:

ERROR in Template execution failed: TypeError: __default(...).call is not a function

ERROR in   TypeError: __default(...).call is not a function

我找到了您的解决方案并进行了尝试。看吧,它起作用了!这就是我现在使用的:

module.exports = function (pagename, linkedPageName) {
  return pagename === linkedPageName ? "active" : ""
  console.log(pagename)
};

要使其正常工作,您需要将该函数保存在文件中,该文件的名称与您正在调用的车把帮助器函数相同,即。就我而言:checkActive.js

答案 1 :(得分:0)

我找到了解决方案。我必须将帮助程序导出为模块,然后它才能工作。

//repeat.js
module.exports = function(times, options) {
    console.log(times);
};