5

私はwebpackでプロジェクトを構築しています。プロジェクトはmaterializecss. materialize.jsエントリファイル に追加すると、以下のエラーが表示されますCannot resolve module 'hammerjs'

ファイルを開くと、そこに定義が表示されますが、webpack では識別できないようです。ノックアウト-es6のweakmapと同じこと。hammer.min.jsこれに対する私の解決策は、 inへの参照を追加することresolve.aliasでしたが、それが正しいことかどうかはわかりません。

webpackこれらの依存関係が問題のライブラリと一緒にバンドルされている場合、これらの依存関係を認識するにはどうすればよいですか?この場合はmaterialize.js?

4

2 に答える 2

8

hammerjsプロジェクトにインストールしている限り(つまりnpm i hammerjs --save)、それが見つかるはずです。@egunays が指摘したように、オブジェクトにもimport 'expose?Hammer!hammerjs/hammerアクセスする必要がありHammerます。

重複の可能性が心配な場合 (生成されたバンドルを調べることで確認できます)、 を使用できますwebpack.optimize.DedupePluginwebpack.optimize.CommonsChunkPlugin重宝することもできます。これにより、アプリ コードをベンダー バンドルから分離できます。

詳細については、公式の最適化ドキュメントを参照してください。

于 2015-05-09T09:06:14.647 に答える
6

これには ProviderPlugin を使用することをお勧めします。

new webpack.ProvidePlugin({
    $: "jquery",
    jQuery: "jquery",
    "Hammer": "hammerjs/hammer"
}),

これは追加のローダーを必要とせず、ドキュメントで実際に推奨されています。

モジュール自体をグローバル コンテキストにエクスポートする必要がある場合があります。本当に必要でない限り、これを行わないでください。(ProvidePlugin を使用することをお勧めします) 1

于 2015-08-26T19:36:42.217 に答える