2013-05-03 57 views
1

问题是我有一些单独的模块,我使用module.exports导出并且相互依赖。说 -node.js模块的编译顺序

mongohelper 
transaction 
server 
conhandlr 
appmin 

现在,服务器模块包含其他四个模块所需的通用对象。然而,编译节点的应用程序时,有些模块是例如服务器模块之前通过控制台输出编译我发现顺序为 -

Compile order- 
mongohelper 
transaction 
server (..the upper modules have undefined common object now)  
conhandlr 
appmin 

那么,有没有办法让我可以确保服务器模块首先编译,以便任何相关模块不具有未定义的对象?

+1

你如何声明他们对'server'模块的依赖? – Bergi 2013-05-03 12:18:48

+0

它有一个共同的对象变量,应该在所有模块之间共享。所以基本上,server.commonVar需要相同。其内容在服务器模块中动态更改。服务器模块使用正常的require()。如果有任何帮助,我特别使用'module.exports'而不是'exports'。 – digster 2013-05-03 12:30:04

+0

如何“编译”? – TheHippo 2013-05-03 13:18:54

回答

-1

没有任何实际的代码,很难理解你真正想知道什么,但我会试着让你对节点模块的工作原理有一个基本的了解。

require("module")是一个同步调用。在解析器继续执行下一行代码之前,完整的模块将被评估/“编译”。这意味着,所有依赖项都按照它们指定的顺序执行。它们也仅在每个过程中执行一次。这意味着,如果您需要多次使用相同的模块,那么只会在第一次执行并且其module.exports被缓存。

我建议你阅读docs

+0

为什么这是一个不好的答案? – buschtoens 2013-08-11 07:23:52