0

モジュールA.jsとB.jsがあるとしましょう。

A.js

var b = require('./B');
[...some code here...]

B.js

var a = require('./A');
[...some code here...]

私よりもapp.js私は次のようなものを持っています:

app.js

var a = require('./A');
[some code here]

問題は、私が好きなときにvar ainB.jsは常に空のオブジェクトであるのに対し、直接行うと適切に初期化されるということです。{}node app.jsnode B.js

代わりに私が期待するのは、それを呼び出すnode app.jsとトリガーA.js(それはが必要B.js)であり、したがって、それはそれ自身のa変数を初期化します....しかし、それは明らかにこのようではありません...。

4

1 に答える 1

2

循環モジュール依存関係があるため、シーケンスは次のようになります。

  1. app.jsAが必要です
  2. AにはBが必要
  3. BにはAが必要です(まだ完全には定義されていません)

ステップ3で、Bはrequire時にAの定義を取得します。それはその時点では単なる空のオブジェクトなので、でa設定されB.jsます。

于 2012-10-22T16:08:17.010 に答える