私のデスクトップアプリケーションは、インタフェースにElectron + Reactを使用し、Edge.jsを使用してNodeとC#アプリケーションを接続しています。サードパーティのライブラリで動的な要件を修正するにはどうすればよいですか?
私の問題はです:Edge.js依存性は、以下のerrorをスローするためのWebPACKは自分のアプリケーションをバンドルするために失敗している:
です重要な依存関係:依存関係の要求が表現
問題はEdge.jsに次の動的要件があることです。
var compilerName = 'edge-' + language.toLowerCase();
var compiler = require(compilerName);
ほとんどの場合、compilerName
は「edge-cs」に変換されますが、Webpackではこれを特定できません。
どうすればこの問題を解決できますか?人々はrequire contextまたはContextReplacementPluginを設定することを提案していますが、どちらも通常require('./directory/' + variable)
の場合に適用され、require(variable)
の場合はどのように使用するのか分かりません。
注:サードパーティのライブラリコードを変更する必要がないソリューションが必要です。
条件文を使用しますか?例えば。変数名をrequireに渡すのではなく、 '' language = xならばx''を必要としますか? – csilk
webpackはすべての可能な要件をバンドルにバンドルする必要があり、必要なものをプログラムで決定するときに、必要なものをパッケージ化時に伝えることができないため、これは機能しません。しかし、csilkとnileshのどちらを使うかは、静的な文字列として必要な可能性のあるすべてのものをwebpackに表示するので使用できます。それはコードをより冗長にしますが、それはwebpackの制限です。 – jfriend00
@ jfriend00でも、サードパーティ製のライブラリコードを変更する必要があります。 – user8983325