2

モジュールのパスを決定する適切な方法を見つけようとしています require()ing mine 次の要件が与えられました:

  • 厳格モードに準拠する必要があります
  • プログラムの引数 (つまり、process.argv) について仮定することはできません。
  • 単一の実行で任意の場所にある複数のモジュールから必要な場合に動作する必要があります (つまり、モジュールがキャッシュされています)

ここに示すように、 Module._load() にパッチを適用し、呼び出し元のパスをクロージャーにキャプチャすることで、これを機能させることになりました: github

しかし、これは正しくありません。何かが欠けているに違いありません。

4

1 に答える 1

0

パッチを適用module._loadすることが最善の方法だと思います。によってモジュールを呼び出した最初のモジュールのみを取得できますmodule.parent.filename。そして、モジュールの全体childrenparentプロパティは、最初のロードのみに当てはまります。ソース コードによると、キャッシュされている場合は何も依存できません。delete require.cache[__filename]モジュールが必要になるたびに、キャッシュから自分自身を削除してみてください( ;)。これにより、適切な親が得られますが、ロード時間が長くなります。

于 2012-11-11T04:31:00.350 に答える