我正在为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