2

私の webpack 構成は、ビルドするノード モジュールの数を指定しますvendors.js。すべてのモジュールはnpm、親フォルダーにインストールされ、存在しますnode_modules

フォルダ構造:

app/scripts/a.js
node_modules/bootstrap-multiselect
webpack.config.js

webpack.config.js からのスニペット:

entry: {
  vendors: ['jquery', 'bootstrap', 'bootstrap-multiselect']
}

これは「jquery」と「bootstrap」では問題ありませんが、「bootstrap-multiselect」では問題ありません。

ERROR in multi vendors
Module not found: Error: Cannot resolve module 'bootstrap-multiselect' 
in /home/user/app

webpack が間違った node_modules フォルダーを調べているようです。app フォルダーのルートを調べているようですが、なぜ他のモジュールが見つかるのでしょうか? だから私はすべてのバリエーションを追加しましたresolveresolveLoader

resolveLoader: {root: path.join(__dirname, 'node_modules')};
resolve: {root: [path.join __dirname, 'node_modules']};

まだ運がない...

4

1 に答える 1

8

理由はわかりませんが、package.jsonダウンロードしnpmたものが正しく構成されていないようです。mainエントリが存在しないファイルを指しています。そのため、おそらくエラーが発生しています。

パッケージ.json

"main": "dist/bootstrap-multiselect.js"

bootstrap-multiselect.jsファイルは下ではありませんがdistdist/js. 回避策として、次のことができます。

  1. vendorsフィールドとrequire'sでフル パスを使用します。

    vendors : ['jquery', 'bootstrap', 'bootstrap-multiselect/dist/js/bootstrap-multiselect']
    
    require('bootstrap-multiselect/dist/js/bootstrap-multiselect';
    
  2. または、パッケージを次の「実際の」ファイルにエイリアスしますwebpack.config.js

    resolve: {
      alias: {
        'bootstrap-multiselect': 'bootstrap-multiselect/dist/js/bootstrap-multiselect'
      }
    }
    

package.jsonただし、github プロジェクトを確認したところ、ファイルが正しいように見えるため、遅かれ早かれ修正する必要があります。

于 2015-12-06T23:31:34.167 に答える