2013-05-03 83 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