嗨,我是Webpack的新手,目前我正在将这个工具添加到我的项目中,在捆绑(webpack ...)jquery依赖库时我收到类似的错误:
错误:无法解析'C:\ some_folder'中的'jquery'
我浏览了互联网上的类似帖子,没有任何积极影响.人们建议使用不同的方法,如: - resolve.alias - plugins ProvidePlugin
我使用webpack 3.3.0,在我的项目中,jQuery是在供应商捆绑脚本之前通过脚本标签以正常方式加载的.包括jQuery在内的大多数供应商库都不在node_modules文件夹中.
webpack.config.js:
const webpack = require('webpack');
const { resolve } = require('path');
module.exports = env => {
return {
context: resolve('src'),
entry: {
comp: './start.comp.js',
culture: './start.culture.js',
strategy: './start.strategy.js',
vendors: './start.vendors.js'
},
output: {
path: resolve('dist'),
publicPath: '/dist/',
filename: 'bundle.[name].js'
},
devtool: env.dev ? 'eval' : 'source-map'
};
};
Run Code Online (Sandbox Code Playgroud)
最后一个条目jquery.placeholder.min.js是个问题
require('./../assets/vendor/typeahead.js');
require('./../assets/vendor/hogan-2.0.0.js');
require('./../assets/vendor/swfobject.js');
require('expose-loader?_!./../assets/vendor/underscore-min.js');
require('expose-loader?FastClick!./../assets/vendor/fastclick.js');
require('expose-loader?AOS!./../assets/vendor/aos.js');
require('./../assets/vendor/jquery.placeholder.min.js');
Run Code Online (Sandbox Code Playgroud)
lyo*_*sef 15
由于jquery.placholder.min.js使用UMD作为其加载策略,它认识到需要通过require- 并尝试以相同的方式要求jQuery:
"object"==typeof module&&module.exports?require("jquery"):jQuery
Run Code Online (Sandbox Code Playgroud)
Webpack看到require("jquery")并尝试捆绑jQuery库(node_modules中不存在).
解决方案是在您的:中添加jQuery作为外部webpack.config.js:
{
...
externals: {
// require("jquery") is external and available
// on the global var jQuery
"jquery": "jQuery"
}
}
Run Code Online (Sandbox Code Playgroud)
当模块被标记为外部模块时,Webpack知道不捆绑它,而是使用全局变量.