webpack无法解决问题' jquery'

时间:2017-07-26 14:41:52

标签: jquery webpack

您好我是Webpack的新手,目前我正在将此工具添加到我的项目中,在捆绑(webpack ...)jquery依赖库期间我收到类似的错误:

  

错误:无法解决' jquery'在&C; \ some_folder'

我浏览了互联网上的类似帖子,没有任何积极影响。 人们建议使用不同的方法,如:   - resolve.alias   - 插件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'
    };
};

最后一个条目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');

2 个答案:

答案 0 :(得分:7)

问题

由于jquery.placholder.min.js使用UMD作为其加载策略,因此它认识到需要通过require - 并尝试以相同的方式要求jQuery:

"object"==typeof module&&module.exports?require("jquery"):jQuery

Webpack看到require("jquery")并尝试捆绑jQuery库(node_modules中不存在)。

解决方案

解决方案是在webpack.config.js中添加jQuery作为external

{
  ...
  externals: {
    // require("jquery") is external and available
    //  on the global var jQuery
    "jquery": "jQuery"
  }
}

当模块被标记为外部时,Webpack知道不捆绑它,而是使用全局变量。

答案 1 :(得分:1)

我在 React 工作时发现,当我导入 react-bootstrap 组件时,有时组件会像 bootstarp 中的 {Buttons} >;然后我得到了这个错误。但是我通过调用从 bootstrapreact-bootstrap 的路径解决了这个问题;

检查您的自动导入调用并尝试更改它。这对我有用。