2017-02-08 13 views
4

ほとんどの日をグーグルで過ごしてから試してみましたが、これはうまくいかず、何が欠けているのか分かりません。 webpack.common.jsで
私はすでにjQueryの作業を持っている(とそれが動作検証済み):たとえばwebpack 2でjQueryプラグインを読み込んでいます

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 '#<Object>' 

require ('metismenu'); 
Cannot assign to read only property 'exports' of object '#<Object>' 

import * as jQuery from 'jquery'; 
import "metismenu"; 
Cannot assign to read only property 'exports' of object '#<Object>' 

答えて

2

webpack.ProvidePluginは何とか私は追加して、モジュールからのjQueryを変更して(そのことで聞いて、他の上で修正のjQueryを使用することができませんでした

WebPACKの2にグローバルが不変の宣言になりように見えます独自の$ .fnを追加するjQueryプラグイン)。

私はあなたが定義することが必要なのjQueryのプラグインが含まれているシングルを作成することをお勧めは「必要が」、それは例えば、私のために働いた。:

((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 { 
    ... 
2

あなたが前に、このバージョンを試してみましたか?

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

はい、私は ' "window.jQuery" を持っているかを

初公開-ローダーをインストールします。 "jquery"、 "も今追加されましたが、それでも主な問題は解決しません。プラグイン自体はどこにロードされますか?私のjqueryは正常に動作します。 – Agony

+0

UMD定義はグローバルスコープを使用していますが、グローバルは未定義であるため、プラグインによってはエラーが発生します。 –

3

を私は同じ問題に直面しました。私はwebpack 2でJqueryと外部プラグインをバンドルすることはできません。

私は部分的にwebpackの外部オプションを使って "解決"しました。

IリンクCDNライブラリ(jqueryおよび他のjqueryプラグイン)。

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.9/semantic.min.js" crossorigin="anonymous"></script> 

私はアプリのファイルでProvidePlugin

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

を私webpack.config

externals: { 
    jquery: 'jQuery' 
} 

の "見た目" オプションを指定して追加し、私はjqueryのをインポートし、このようなプラグインを使用します

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

Webpack 2でjQueryをバンドルする方法を誰かに教えていただければ幸いです。

0

webpack 2では、これを実現するためにexpose-loaderモジュールを使用できるようになりました。あなたのインポートを変更(または必要)、次の構文を使用する際にその後

npm install expose-loader --save-dev 

import "expose-loader?$!jquery"; 
関連する問題