2012-10-22 196 views
0

假设我有模块A.js和B.js.nodejs - 模块依赖关系

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 aB.js始终是一个空对象{}当我不喜欢node app.js而如果我直接做node B.js它是正确的初始化

什么,而不是我所期望的是,调用node app.js它触发A.js(需要B.js)等,反过来它initialtes自己的a变量....但它是不是这样显然....

回答

2

你已经有了一个circular module dependency,所以这个顺序是这样的:

  1. app.js要求甲
  2. A需要乙
  3. B要求A(其尚未完全定义)

在步骤3中,B获得A的定义在的所需要的时间。这只是一个空的对象,因此aB.js中被设置为。

+0

yeha,我也这么认为...感谢您的链接和信息。 – 0m4r