【问题标题】:Custom helper with handlebars-loader带有把手加载器的自定义助手
【发布时间】:2018-07-09 20:56:02
【问题描述】:

我将这个handlebars-loader 用于 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}}   

有谁知道我做错了什么?

【问题讨论】:

  • 我一直在努力解决这个问题,我认为这是 webpack 4 中加载程序的一个错误。你找到解决方案了吗?
  • 正在考虑使用这种方法 - 你能告诉我帮助文件的名称吗?或者,您似乎引用了整个 helpers 目录是否重要?谢谢。

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


【解决方案1】:

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

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

【讨论】:

  • 如何在这个文件中使用“Handlebars”变量。当我尝试导入它时,它给了我一个错误。
【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2019-07-30
    相关资源
    最近更新 更多