我的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文件夹.它看起来似乎是应用程序文件夹的根目录,但那为什么它仍然会找到其他模块?所以我添加了resolve
和的每个变体resolveLoader
,
resolveLoader: {root: path.join(__dirname, 'node_modules')}; resolve: {root: [path.join __dirname, 'node_modules']};
仍然没有运气......
不知道为什么,但package.json
下载的npm
似乎没有正确配置.该main
条目指向不存在的文件.这就是你可能得到错误的原因.
"main": "dist/bootstrap-multiselect.js"
该bootstrap-multiselect.js
文件不在dist
但是dist/js
.作为一种解决方法,您可以:
使用vendors
字段中的完整路径和require
:
vendors : ['jquery', 'bootstrap', 'bootstrap-multiselect/dist/js/bootstrap-multiselect'] require('bootstrap-multiselect/dist/js/bootstrap-multiselect';
或者,将包命名为以下内容中的"真实"文件webpack.config.js
:
resolve: { alias: { 'bootstrap-multiselect': 'bootstrap-multiselect/dist/js/bootstrap-multiselect' } }
但是,迟早它应该被修复,因为我检查了github项目,那里的package.json
文件看起来是正确的.