使用webpack 2加载jQuery插件

在谷歌搜索和尝试的大部分时间后 – 我没有让它工作,在这一点上,我不知道缺少什么。
我已经在webpack.common.js中运行了jQuery(并validation了它的工作原理):

new ProvidePlugin({ jQuery: 'jquery', $: 'jquery', jquery: 'jquery' }) 

例如,我有一个“MetisMenu”插件,我应该在哪里配置它?

我在app.module.ts中尝试了各种require/include组合。
喜欢(包括将它们分配给常量/ var但导入/需要总是给出这个错误):

 import 'metismenu'; jQuery(...).metisMenu is not a function import { metisMenu } from 'metismenu'; Cannot assign to read only property 'exports' of object '#' require ('metismenu'); Cannot assign to read only property 'exports' of object '#' import * as jQuery from 'jquery'; import "metismenu"; Cannot assign to read only property 'exports' of object '#' 

看起来像webpack.ProvidePlugin在Webpack 2中以某种方式声明全局变量不可变。

我无法从一个模块修改jQuery,然后在另一个上使用修改过的jQuery(听说,添加一个jQuery插件,添加自己的$ .fn。)。

我建议你创建一个包含必要的jQuery插件“require”的定义,它对我有用,例如:

 ((root, factory) => { // AMD. Register as an anonymous module. define([ 'modernizr' ], factory); })(this, (Modernizr) => { // Do the requires here instead of doing it on the main file // Fix broken $.animate so Slick can work with require('./animatePolyfill'); // Inject carousel there require('slick-carousel'); class Core extends PluginBase { ... 

我遇到了同样的问题。 我无法使用webpack 2捆绑Jquery和外部插件。

所以我部分地使用webpack的外部选项“解决”了。

我链接CDN库(jquery和其他jquery插件)。

   

我在webpack.config上指定了“externals”选项

 externals: { jquery: 'jQuery' } 

并添加ProvidePlugin

 new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }) 

在app文件中,我导入jquery并使用这样的插件

  import * as $ from 'jquery'; $('.accordion').accordion(); 

如果有人能告诉我如何将jQuery与Webpack 2捆绑在一起,我感激不尽

你以前试过这个版本吗?

 new webpack.ProvidePlugin({ 'jQuery': 'jquery', 'window.jQuery': 'jquery', 'window.$': 'jquery', }), 

使用webpack 2,您现在可以使用expose-loader模块来完成此任务。

首先安装expose-loader:

 npm install expose-loader --save-dev 

然后在更改导入(或require)时使用以下语法:

 import "expose-loader?$!jquery";