3

我正在为 webpack 4 使用这个把手加载器。现在我想使用自定义助手,但我只收到这个错误

模板执行中的错误失败: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}}   

有谁知道我做错了什么?

4

2 回答 2

3

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

//repeat.js
module.exports = function(times, options) {
    console.log(times);
};
于 2018-08-15T05:09:16.267 回答
2

谢谢你,格雷戈尔!这让我沮丧了一整天!

我在帮助文件 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

于 2020-07-21T16:53:59.080 回答