带把手装载机的定制助手



我正在为webpack 4使用这个手柄加载程序。现在我想使用一个自定义的助手,但我只得到这个错误

模板执行失败错误:类型错误:__default(…(。调用不是函数

类型错误错误:__default(…(。调用不是函数

这是我的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}}   

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

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

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

谢谢你,Gregor!这让我一整天都很沮丧!

我在助手文件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)
};

为了实现这一点,您需要将函数保存在一个文件中,该文件的名称与您正在调用的handlerbals-helper函数的名称相同,即在我的情况下:checkActive.js

相关内容

  • 没有找到相关文章

最新更新