依存関係は異なる必要はありません。代わりに、モジュールに依存関係としてどちらのモジュールも持たないようにします。むしろ、2つの異なるケースについてモジュールをパラメーター化し、それらのケースを処理するためにサーバーおよびブラウザー固有のコードから正しいパラメーターを渡す必要があります。1つの方法は、メソッドが呼び出される前にモジュールに特定のプロパティを設定することを要求し、このプロパティを必要なファイル読み込み機能を提供するオブジェクトに設定することです。
mymodule.fileLoader = fswrapper;
また
mymodule.fileLoader = ajaxWrapper;
(明らかに、上記の2つのフラグメントは、サーバー固有のコードとブラウザー固有のコードにそれぞれ表示されます)。もう1つの方法は、関連するオブジェクトをモジュールからエクスポートされたクラスのコンストラクターに渡すか(モジュールが公開される方法である場合)、作成されたオブジェクトのプロパティとして割り当てることです。例えば
var v = new MyClass(fswrapper);
//or
var v = new MyClass();
v.fileLoader = ajaxWrapper;
これらのアイデアにはさまざまなバリエーションがありますが、重要なのは、共有モジュールからファイルシステムの違いを抽象化し、代わりに問題の環境へのアクセスを処理するオブジェクトを渡す必要があるということです。