2017-08-14 7 views
0

でコールする必要があります.WebPackに問題があります。私は、requireJSとcommonJSとの互換性を実装するベンダーライブラリ(ChildVendorと言う)を持っています。そのため、WebPackプロジェクトではvar lib = require('./childVendor');のようなものが必要です。 childVendor.jsの見出しがどのように見える、これChildVendorライブラリは、依存関係(SuperVendorを言う)を有しており、それらの両方がrequirejs-あるとcommonjs適応、そう:WebPack交換ベンダーは、グローバル変数

(function(root, factory) { 
    if (typeof define === 'function' && define.amd) { 
    define(["superVendor"], factory); 
    } else if (typeof exports === 'object') { 
    module.exports = factory(require('superVendor')); 
    } else { 
    root.Shepherd = factory(root.SuperVendor); 
    } 
}(this, function(SuperVendor) { /*...*/ })); 

主な問題は、私はSuperVendorことを含める必要があるということです他のサードパーティのライブラリで使用する必要があるため、手動でhtml-file上のライブラリを手動で(つまり、単にwindow.SuperVendorとして初期化されます)。この問題を解決するには

、私は

plugins: [ 
    new webpack.ProvidePlugin({ 
     'superVendor': 'SuperVendor' 
    }) 
], 

のように、webpack.ProvidePluginを試してみましたが、エラーはまだ(Module not found: Error: Can't resolve 'superVendor' in '...')と同じです。

答えて

0

ProvidePluginは、あなたがしたいことに対する解決策ではありません。あなたはそれを設定した構成はWebPACKのを伝えます:

superVendorがモジュールSuperVendorをロードし、SuperVendorによってエクスポートされたものに変数superVendorを設定し、モジュール内の自由変数として遭遇するたびに。言い換えれば

あなたがこれを含むモジュールがある場合:あなたはそれをexternals設定オプションを使用する必要がありますどのような

var superVendor = require("SuperVendor"); 
superVendor.someMethod(); 

superVendor.someMethod(); 

WebPACKのそれであるかのようにそれを解釈します。

externals: { 
    'superVendor': 'SuperVendor' 
} 

これはモジュールsuperVendorが必要な場合は、外部環境からSuperVendorという名前で検索する必要があることをWebpackに伝えます。

関連する問題