Handlebars.js: 使用带有 webpack 警告的 Handlebars 不支持 require.extentions

创建于 2015-02-04  ·  10评论  ·  资料来源: handlebars-lang/handlebars.js

使用 Webpack 加载 Handlebars 时,有什么方法可以删除或禁用这些警告?

./~/handlebars/lib/index.js 中的警告
webpack 不支持 require.extensions。 请改用装载机。

./~/handlebars/lib/index.js 中的警告
webpack 不支持 require.extensions。 请改用装载机。

./~/handlebars/lib/index.js 中的警告
webpack 不支持 require.extensions。 请改用装载机。

最有用的评论

@kpdecker @seeliang :我只想让其他人知道别名车把有效。

 resolve:
  {
    alias: {
      'handlebars' : 'handlebars/dist/handlebars.js'
    }
  },

谢谢@kpdecker。

所有10条评论

我建议使用类似 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()]
}

也确实有效。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

matrym picture matrym  ·  37评论

rottmann picture rottmann  ·  11评论

dougwilson picture dougwilson  ·  23评论

kpdecker picture kpdecker  ·  18评论

eotope picture eotope  ·  20评论