gpt4 book ai didi

webpack - 如何通过 webpack 在 Handlebars 中使用助手(handlebars-loader)

转载 作者:行者123 更新时间:2023-12-02 15:09:44 25 4
gpt4 key购买 nike

我在我的项目中使用 Handlebars,并使用 webpack 捆绑模板。我正在使用handlebars-loader来编译模板。当我创建一个小助手时遇到问题。当我在模板中使用 helper 时,Webpack 显示此错误:

You specified knownHelpersOnly, but used the unknown helper withCurrentItem - 5:4

这是我的代码:

Webapck:

{
test : /\.(tpl|hbs)$/,
loader : "handlebars-loader?helperDirs[]=" + __dirname + "templates/helpers"
// use : 'handlebars-loader?helperDirs[]=false' + __dirname + 'templates/helpers'
},

助手(项目/模板/helpers/withCurrentItem.js):

export default function (context, options) {
const contextWithCurrentItem = context

contextWithCurrentItem.currentItem = options.hash.currentItem

return options.fn(contextWithCurrentItem)
}

模板文件(project/templates/products.tpl):

{{> partials/filters}}
<ul class="u-4-5">
{{#each data.products}}
{{> partials/product}}
{{withCurrentItem ../styles currentItem=this}}
{{/each}}
</ul>

我试图解决这个问题并在互联网上搜索,但我找不到任何东西。这是我尝试过的:

  • helperDirs[] 查询参数添加到加载器,如下所示:

    loader : "handlebars-loader?helperDirs[]="+ __dirname + "模板/助手"

  • 将 helpers 目录路径添加到 webpack 配置文件的 resolve.modules 属性

遗憾的是,它们都不起作用。

最佳答案

对我来说,这些方法都不起作用。我使用 runtime 选项创建了我自己的 Handlebars 实例(感谢 comment ):

webpack.config.js

module: {
rules: [
{
test: /\.(handlebars|hbs)$/,
loader: 'handlebars-loader',
options: {
runtime: path.resolve(__dirname, 'path/to/handlebars'),
},
},

路径/to/handlebars.js

const Handlebars = require('handlebars/runtime');
Handlebars.registerHelper('loud', function(aString) {
return aString.toUpperCase();
});
module.exports = Handlebars;

关于webpack - 如何通过 webpack 在 Handlebars 中使用助手(handlebars-loader),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44543434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com