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 文件夹。它看起来似乎是应用程序文件夹的根目录,但为什么它仍然会找到其他模块?所以我添加了 and 的每一个变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

    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'
      }
    }
    

但是,迟早应该修复它,因为我检查了 github 项目并且package.json文件看起来正确。

于 2015-12-06T23:31:34.167 回答