2017-10-26 14 views
1

libvorbis.jsというオーディオエンコーディングライブラリを読み込もうとしています。これはemscriptenのvorbisのコンパイル済みバージョンです。モジュール変数を上書きするライブラリを持つimports-loaderとexports-loader

libvorbis.jsは、スコープ内にwindow変数を指定して実行する必要があり、エクスポート宣言なしでクラスをvarとして公開します。

通常、imports-loaderとexports-loaderを連鎖させて、そのようなファイルを取得するのは簡単です。 Using-

「この」内部libvorbis.jsとしてウィンドウオブジェクトを公開し、後で実行するために、私の他のモジュール/コードによって必要とされ、これにリターンとしてVorbisMediaRecorderを取り出します
require 'imports-loader?this=>window!exports-loader?VorbisMediaRecorder!libvorbis.js/build/libvorbis.js' 

しかし、自身libvorbis.jsそれはコードだで、このチェックを持っているエクスポート

libvorbis.jsからネジまでの輸出・ローダー「モジュール」変数が上書きされ

// node.js Environment 
var module; 
if (module && module.exports) { 
    makeVorbisEncoderModule({}, module); 
} 

// Web Worker Environment 
if (!module && this.document === undefined) { 
    VorbisWorkerScript.main(this); 
} 

これはWebPACKの原因となるモジュールを上書きします

を実行しようとしているとして、このエラー

commons.js:142 TypeError: Cannot set property 'exports' of undefined 

をスローします10

/*** EXPORTS FROM exports-loader ***/ 
module.exports = VorbisMediaRecorder; 

この問題を解決する方法はありますか?私は本当にlibvorbisをフォークしてソースを変更したくありません。

libvorbis.jsライブラリは、ページにスクリプトとして含まれるように書かれています。

答えて

1

私はファイルローダーを使用して私の特定の問題を解決しました。これは、srcなどのファイルとまったく同じようにスクリプトをロードするため、問題なく実行できます。

# libvorbis must be resolved in window scope, use the file-loader 
require 'file-loader?name=[name].[ext]!libvorbis.js/build/libvorbis.js' 
関連する問題