使用 Webpack 加载 Handlebars 时,有什么方法可以删除或禁用这些警告?
./~/handlebars/lib/index.js 中的警告
webpack 不支持 require.extensions。 请改用装载机。
./~/handlebars/lib/index.js 中的警告
webpack 不支持 require.extensions。 请改用装载机。
./~/handlebars/lib/index.js 中的警告
webpack 不支持 require.extensions。 请改用装载机。
我建议使用类似 handlebars-loader 并使用handlebars/runtime
模块进行预编译。 否则,您应该通过 bower 使用其中一个客户端构建,因为它们没有任何此节点特定的代码。
我建议使用handlebars-loader 之类的东西进行预编译,并使用handlebars/runtime 模块。
@kpdecker我们该怎么做? 我已经安装了车把 1.3.0 和车把加载器 ^1.0.2,然后我有一个如下所示的 AMD 模块:
define([
'hbs!path/to/template' // path/to/template.hbs
],
function(template) {
// ...
});
在 webpack 配置中我有:
{
resolveLoader: {
fallback: path.join(__dirname, 'node_modules'),
alias: {
'hbs': 'handlebars-loader'
}
},
}
以便hbs!
映射到车把加载器。 然后当我运行 webpack 时,我会收到那些熟悉的警告:
WARNING in /some/absolute/path/~/handlebars/lib/index.js
require.extensions is not supported by webpack. Use a loader instead.
我错过了什么? 我应该用handlebars/runtime
做什么?
好吧,所以为把手添加别名似乎已经摆脱了警告:
{
resolve: {
modulesDirectories: ['node_modules', 'src'],
fallback: path.join(__dirname, 'node_modules'),
alias: {
'handlebars': 'handlebars/runtime.js'
}
},
resolveLoader: {
fallback: path.join(__dirname, 'node_modules'),
alias: {
'hbs': 'handlebars-loader'
}
}
}
这似乎是诀窍,但在任何东西都可以运行之前,我还有其他错误要弄清楚,然后我会知道这是否有效。
嗨, @kpdecker ,
感谢您的反馈意见。
这是一种工作。
我有同样的问题,如果我添加@trusktr的“resolve”部分('handlebars/runtime.js')运行 webpack,我会得到“Handlebars.compile 不是函数”,这很有趣
我错过了什么吗?
非常感谢
运行时不包括编译器。 您需要预编译您的模板,这是最佳实践。 如果您绝对需要在客户端编译模板并且对成本(启动和文件大小)没问题,那么您需要将把手别名为handlebars/dist/handlebars.js
谢谢@kpdecker ,
我会试试的
我还提交了#1102,看看是否可以让那些想要整个运行时的人更干净。
@kpdecker @seeliang :我只想让其他人知道别名车把有效。
resolve:
{
alias: {
'handlebars' : 'handlebars/dist/handlebars.js'
}
},
谢谢@kpdecker。
对于其他看这里的人
这是我找到的最好的解决方案
https://github.com/valtech-nyc/brookjs/blob/master/packages/brookjs/webpack.config.js#L39 -L43
这里https://github.com/pcardune/handlebars-loader/issues/110#issuecomment -358681867
感谢@mAAdhaTTah
升级版:
//fix handlebars warnings
config.resolve.alias = {
...config.resolve.alias,
'handlebars/runtime': 'handlebars/dist/cjs/handlebars.runtime',
'handlebars': 'handlebars/dist/cjs/handlebars.runtime',
};
const nodeExternals = require('webpack-node-externals');
module.exports = {
externals: [nodeExternals()]
}
也确实有效。
最有用的评论
@kpdecker @seeliang :我只想让其他人知道别名车把有效。
谢谢@kpdecker。