2012-11-10 18 views
2

試圖找到合適的方法來確定模塊的路徑需要()荷蘭國際集團礦山給出的以下要求:node.js中 - 找到)的要求路徑(荷蘭國際集團模塊

  • 必須進行嚴格的模式相兼容
  • 不能對程序ARGS任何假設(即process.argv)
  • 必須任意位置從多個模塊需要一個單一的執行工作時(即我的模塊緩存)

我結束了通過對Module._load()進行修補並捕獲封閉中的調用者路徑來實現此功能,如下所示:github

但是,這種感覺不正確 - 我必須錯過某些東西。

回答

0

修補module._load是我認爲最好的方式。您只能通過module.parent.filename獲得第一個調用模塊的模塊。並且模塊的整個childrenparent屬性僅在第一次加載時才爲真。根據source code,如果它被緩存,你不能依賴任何東西。您可以嘗試從緩存中刪除自己(delete require.cache[__filename];)然後每次需要您的模塊時,您都會得到正確的父代,但這會增加您的加載時間。

相關問題