檢查出Node's module caching caveats模塊的「單一」的細節將打破的情況。
如果您始終將一個包中的文件路徑(從./
,../
或/
開始)引用到您的單例模塊中,那麼您就很安全。
如果你的服務被封裝在一個被其他模塊使用的包中,你最終可能會得到你的單例的多個實例。
說,我們發佈這個甜蜜的服務庫:
service-lib/
⌞ package.json
⌞ service.js
service.js:
var singleton = {};
module.exports = singleton;
在這個應用程序,server.js
和other.js
將得到我們的服務不同實例:
app/
⌞ server.js
⌞ node_modules/
⌞ service-lib/
⌞ service.js
⌞ other-package/
⌞ other.js
⌞ node_modules/
⌞ service-lib/
⌞ service.js
雖然這個程序將份額一個實例:
app/
⌞ server.js
⌞ node_modules/
⌞ service-lib/
⌞ service.js
⌞ other-package/
⌞ other.js
相同的npm install
相同的app
可能會導致根據版本的依賴關係的目錄結構。節點的folders doc有詳細信息。