Handlebars.js: webpack警告require.extentionsでハンドルバーを使用することはサポートされていません

作成日 2015年02月04日  ·  10コメント  ·  ソース: handlebars-lang/handlebars.js

Webpackでハンドルバーをロードするときにこれらの警告を削除または無効にする方法はありますか?

./~/handlebars/lib/index.jsの警告
require.extensionsはwebpackではサポートされていません。 代わりにローダーを使用してください。

./~/handlebars/lib/index.jsの警告
require.extensionsはwebpackではサポートされていません。 代わりにローダーを使用してください。

./~/handlebars/lib/index.jsの警告
require.extensionsはwebpackではサポートされていません。 代わりにローダーを使用してください。

最も参考になるコメント

@kpdecker @seeliang :エイリアシングハンドルバーが機能することを他の人に知らせたいだけです。

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

@kpdeckerに感謝します。

全てのコメント10件

handlebars-loaderのようなものを使用してプリコンパイルし、 handlebars/runtimeモジュールを利用することをお勧めします。 それ以外の場合は、このノード固有のコードがないため、bowerを介してクライアント側のビルドの1つを使用する必要があります。

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!がhandlebars-loaderにマップされるようにします。 次に、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に感謝します

UPD:

//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 評価